Snpkit/Masory

平常一些簡化重復的代碼

import SnapKit
extension ConstraintMaker {
    func equalToPreTop(preView: UIView?, offset: CGFloat, topOffset: CGFloat? = nil) {
        if let preView = preView {
            self.top.equalTo(preView.snp.bottom).offset(offset)
        } else {
            if let topOffset = topOffset, topOffset != 0 {
              self.top.equalToSuperview().offset(topOffset)
            } else {
              self.top.equalToSuperview()
           }
        }
    }
    func equalToPreLeft(preView: UIView?, offset: CGFloat, leftOffset: CGFloat? = nil) {
        if let preView = preView {
            self.left.equalTo(preView.snp.right).offset(offset)
        } else {
           if let leftOffset = leftOffset, leftOffset != 0 {
              self.left.equalToSuperview().offset(leftOffset)
            } else {
              self.left.equalToSuperview()
           }
        }
    }
    
    func equalToMargins( _ margin: CGFloat) {
        self.left.equalTo(margin)
        self.right.equalTo(-margin)
    }
    
    func equalToBottomLess(show: Bool?, margin: CGFloat) {
        if show == true {
            self.bottom.lessThanOrEqualToSuperview().offset(-margin)
        }
    }
}

使用在一些for循環(huán)出來添加到view上的場景
A
|
B
|
C

// 上下排列的樣式
var topView: UIView? = nil
for i in (0..<10) {
let item = UIView()
self.addSubView(item)
item.snp.makeConstraints { make in
   // 具體相鄰的頂部的view的bottom距離為10,如果沒有頂部的view,等于父view的頂部20的距離
   make.equalToPreTop(preView: topView, offset: 10, topOffset: 20)
  // 距離左右15的距離
   make.equalToMargins(margin: 15)
   make.height.equalTo(20)
 }
  topView = item
}

E-F-G

// 左右排列的樣式
var leftView: UIView? = nil
for i in (0..<10) {
let item = UIView()
self.addSubView(item)
item.snp.makeConstraints { make in
   // 具體相鄰的頂部的view的右側(cè)距離為10,如果沒有左部的view,等于父view的左部20的距離
   make.equalToPreLeft(leftView: leftView, offset: 10, leftOffset: 20)
   make.width(80)
   make.height.equalTo(20)
 }
  leftView = item
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容