swift之SnapKit

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è)置寬度或者高度的約束),造成編譯錯誤

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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