SnapKit下載地址:
https://github.com/SnapKit/SnapKit
SnapKit布局:
由于從snapKit源碼可以得知,SnapKit會自動將view的translatesAutoresizingMaskIntoConstraints設(shè)置為false,因此在使用SnapKit布局時不用再設(shè)置了。
view1.snp.makeConstraints { make in
make.left.equalToSuperview() // view1的左邊距父視圖左邊0
make.left.equalToSuperview().offset(50) // view1的左邊距父視圖左邊50
make.left.equalTo(view2.snp.right) // view1的左邊距view2的右邊0
make.left.equalTo(view2.snp.right).offset(50)// view1的左邊距view2的右邊50
make.width.equalToSuperview() // view1的寬和父視圖一樣
make.width.equalToSuperview().offset(-50) // view1的寬比父視圖的寬少50
make.width.equalTo(view2.snp.width) // view1的寬和view2的寬一樣
make.width.equalTo(view2.snp.width).offset(50) // view1的寬比view2的寬多50
make.center.equalToSuperview() // view1的中心和父視圖一樣
make.center.equalToSuperview().offset(50) // view1的中心距離父視圖中心x、y各50
make.center.equalTo(view2) // view1的中心和view2的中心一樣
make.center.equalTo(view2).offset(-50) // view1的中心距離view2的中心x、y各-50
make.centerX.equalToSuperview() // view1的x軸距離父視圖的x軸0
make.centerX.equalToSuperview().offset(50) // view1的x軸距父視圖x軸50
make.centerX.equalTo(view2) // view1的x軸距離view2的x軸0
make.centerX.equalTo(view2).offset(-50) // view1的x軸距離view2的x軸-50
make.left.lessThanOrEqualToSuperview() // view1的左邊距離父視圖的左邊0或者更少
make.left.lessThanOrEqualToSuperview().offset(50) // view1的左邊距離父視圖的左邊在50內(nèi)
make.left.lessThanOrEqualTo(view2.snp.right) // view1的左邊距離view2的右邊0或者更少
make.left.lessThanOrEqualTo(view2.snp.right).offset(50) // view1的左邊距離view2的右邊在50內(nèi)
make.left.greaterThanOrEqualToSuperview() // view1的左邊距離父視圖的左邊0或者更多
make.left.greaterThanOrEqualToSuperview().offset(50) // view1的左邊距離父視圖的左邊在50或者以上
make.left.greaterThanOrEqualTo(view2.snp.right) // view1的左邊距離view2的右邊0或者更多
make.left.greaterThanOrEqualTo(view2.snp.right).offset(50) // view1的左邊距離view2的右邊在50或者以上
make.width.equalTo(100) // view1的寬為100
make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top).offset(50) // view1的頂部距離self.view的頂部安全區(qū)距離再加50
make.bottom.equalTo(self.view.safeAreaLayoutGuide.snp.bottom).offset(-50) // view1的地部距離self.view的底部安全區(qū)距離再加50
}
SnapKit更改約束
1.使用remakeConstraints:刪除原來的所有約束,重新布局約束
view1.snp.remakeConstraints { make in
make.center.equalToSuperview()
make.width.equalTo(100)
make.height.equalTo(100)
}
2.使用updateConstraints:更新約束,覆蓋已有約束
view1.snp.updateConstraints { make in
make.width.equalTo(150)
}
在更新約束時千萬不要使用makeConstraints,因為makeConstraints是直接添加約束,保留了舊的約束,也就是不會刪除原來的約束,會導(dǎo)致約束個數(shù)大于基本的四個(也就是可能會出現(xiàn)兩個設(shè)置寬度或者高度的約束),造成編譯錯誤