OC里面,我們常用Masonry,SDAutoLayout。
Swift里,我們常用SnapKit。
一、項(xiàng)目集成
Podfile 導(dǎo)入
pod 'SnapKit'
使用
import SnapKit
#注意#
通過(guò) snp.makeConstraints 方法給view添加約束,約束有幾種,分別是邊距,寬,高,左上右下距離,基準(zhǔn)線。
添加過(guò)約束后可以有修正,修正有位移修正(inset、offset)和倍率修正(multipliedBy)
語(yǔ)法一般是: make.equalTo 或 make.greaterThanOrEqualTo 或 make.lessThanOrEqualTo + 倍數(shù)和位移修正。
.equalTo:等于
.lessThanOrEqualTo:小于等于
.greaterThanOrEqualTo:大于等于
注意: 使用 snp.makeConstraints 方法的元素必須事先添加到父元素的中,例如:self.view.addSubview(view)
對(duì)于如何使用SnapKit,這里簡(jiǎn)單講一些常用的場(chǎng)景:
場(chǎng)景1:
在view中心添加一個(gè)長(zhǎng)寬200的view
box1.snp.makeConstraints({ (make) in
make.width.height.equalTo(200)
make.center.equalTo(self.view)
})
場(chǎng)景2:
在紅色view里,添加一個(gè)子view,距離頂部30px
box1.backgroundColor = UIColor.red
box2.backgroundColor = UIColor.green
view.addSubview(box1)
box1.addSubview(box2)
box1.snp.makeConstraints({ (make) in
make.width.height.equalTo(200)
make.center.equalTo(self.view)
})
box2.snp.makeConstraints({ (make) in
make.top.equalTo(box1.snp.top).offset(30) //距離box1 30距離
make.left.equalTo(box1) //等效于 make.left.equalTo(box1.snp.left)
make.right.equalTo(box1)
make.height.equalTo(30)
})
場(chǎng)景3:
添加兩個(gè)view,高寬相等,綠色的緊靠紅色上下排列
box1.backgroundColor = UIColor.red
box2.backgroundColor = UIColor.green
view.addSubview(box1)
view.addSubview(box2)
box1.snp.makeConstraints({ (make) in
make.left.equalTo(20) //距離左邊20
make.right.equalTo(-20) //距離右邊20,注意,這里要為負(fù)的20
make.top.equalTo(100)
make.height.equalTo(50)
})
box2.snp.makeConstraints({ (make) in
make.top.equalTo(box1.snp.bottom) //頂部靠著box1底部
make.left.right.height.equalTo(box1) //左右高和box1對(duì)齊
})
場(chǎng)景4:
添加兩個(gè)view,高寬相等,左右排列
box1.backgroundColor = UIColor.red
box2.backgroundColor = UIColor.green
view.addSubview(box1)
view.addSubview(box2)
box1.snp.makeConstraints({ (make) in
make.width.height.equalTo(100)
make.left.equalTo(view)
make.top.equalTo(100)
})
box2.snp.makeConstraints({ (make) in
make.size.equalTo(box1) //大小等于box1
make.top.equalTo(box1) //頂部和box1對(duì)齊
make.right.equalTo(view)
})
場(chǎng)景5:
添加兩個(gè)view,綠色大小為紅色一半,上下排列
box1.backgroundColor = UIColor.red
box2.backgroundColor = UIColor.green
view.addSubview(box1)
view.addSubview(box2)
box1.snp.makeConstraints({ (make) in
make.size.equalTo(CGSize(width: 200, height: 200))
make.centerX.equalTo(view)
make.centerY.equalTo(view).offset(-100) //中心點(diǎn)為view中心偏上100距離
})
box2.snp.makeConstraints({ (make) in
make.size.equalTo(box1).multipliedBy(0.5) //大小為box1一半
make.centerX.equalTo(box1)
make.top.equalTo(box1.snp.bottom).offset(20)
})
場(chǎng)景6:
添加兩個(gè)view,綠色在紅色里面,內(nèi)邊距設(shè)置為依次10、20、30、40文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-796792.html
box1.backgroundColor = UIColor.red
box2.backgroundColor = UIColor.green
view.addSubview(box1)
box1.addSubview(box2)
box1.snp.makeConstraints({ (make) in
make.width.height.equalTo(200)
make.center.equalTo(self.view)
})
box2.snp.makeConstraints({ (make) in
//內(nèi)距box1邊距分別為10、20、30、40
make.edges.equalTo(box1).inset(UIEdgeInsetsMake(10, 20, 30, 40))
})
總結(jié):
以上幾種是比較常用的使用場(chǎng)景,涉及到一些基本屬性。
當(dāng)然如果你用過(guò)Masonry,會(huì)發(fā)現(xiàn)和Masonry很像,畢竟是同一團(tuán)隊(duì)操刀的嘛。
多用多熟練嘛,biu~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-796792.html
到了這里,關(guān)于Swift自動(dòng)布局: SnapKit,相當(dāng)于Objective-C中的Masonry。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!