SnapKit下载地址:
https://github.com/SnapKit/SnapKit
SnapKit布局:
由于从snapKit源码可以得知,SnapKit会自动将view的translatesAutoresizingMaskIntoConstraints设置为false,因此在使用SnapKit布局时不用再设置了。
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内
make.left.lessThanOrEqualTo(view2.snp.right) // view1的左边距离view2的右边0或者更少
make.left.lessThanOrEqualTo(view2.snp.right).offset(50) // view1的左边距离view2的右边在50内
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的顶部安全区距离再加50
make.bottom.equalTo(self.view.safeAreaLayoutGuide.snp.bottom).offset(-50) // view1的地部距离self.view的底部安全区距离再加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是直接添加约束,保留了旧的约束,也就是不会删除原来的约束,会导致约束个数大于基本的四个(也就是可能会出现两个设置宽度或者高度的约束),造成编译错误
网友评论