平常一些簡化重復的代碼
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
}