代码:
import UIKit
import SnapKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let view = UIView()
view.backgroundColor = UIColor.red
self.view.addSubview(view)
//初始化约束
view.snp.makeConstraints{ (make) in
make.left.equalTo(20)
make.right.equalTo(-20)
make.top.equalTo(20)
make.bottom.equalTo(-20)
}
//更新约束
view.snp.updateConstraints{ (make) in
make.left.equalTo(100)
make.right.equalTo(-100)
make.top.equalTo(100)
make.bottom.equalTo(-100)
}
//移除约束
view.snp.removeConstraints()
// Do any additional setup after loading the view.
}
}
初始化效果:
image.png
更新后效果:
image.png
两个view嵌套:
// 黑色视图作为父视图
let view1 = UIView()
view1.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
view1.center = view.center
view1.backgroundColor = UIColor.black
view.addSubview(view1)
// 测试视图
let view2 = UIView()
view2.backgroundColor = UIColor.magenta
view1.addSubview(view2)
view2.snp.makeConstraints { (make) in
make.top.equalToSuperview().offset(20) // 当前视图的顶部距离父视图的顶部:20(父视图顶部+20)
make.left.equalToSuperview().offset(20) // 当前视图的左边距离父视图的左边:20(父视图左边+20)
make.bottom.equalToSuperview().offset(-20) // 当前视图的底部距离父视图的底部:-20(父视图底部-20)
make.right.equalToSuperview().offset(-20) // 当前视图的右边距离父视图的右边:-20(父视图右边-20)
// make.edges.equalToSuperview().inset(UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)) //简洁写法
}
效果:
image.png
布局一个视图view2, 让它的水平中心线小于等于另一个视图view2的左边,可以这样布局:
// 黑色视图作为父视图
let view1 = UIView()
view1.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
view1.center = view.center
view1.backgroundColor = UIColor.black
view.addSubview(view1)
// 测试视图
let view2 = UIView()
view2.backgroundColor = UIColor.magenta
view1.addSubview(view2)
view2.snp.makeConstraints { (make) in
// 让顶部距离view1的底部为10的距离
make.top.equalTo(view1.snp.bottom).offset(10)
// 设置宽、高
make.width.height.equalTo(100)
// 水平中心线<=view1的左边
make.centerX.lessThanOrEqualTo(view1.snp.leading)
}
image.png
网友评论