我希望我的视图具有以下属性(数字是任意选择的):
-
宽度等于高度除以1.2
-
停留在屏幕右下角
-
纵向时,高度为屏幕高度的1/7。
-
方向改变时宽度和高度不变
前三个需求可以很容易地转化为
UILayoutConstraint
S.我用Snapkit完成了它们,只是因为它读得更清楚。你应该明白我的意思,即使你以前从未使用过Snapkit。
let myView = UIView(frame: .zero)
myView.backgroundColor = .green
view.addSubview(myView)
myView.snp.makeConstraints { (make) in
make.right.equalToSuperview().offset(-8)
make.bottom.equalToSuperview().offset(-8)
make.width.equalTo(myView.snp.height).dividedBy(1.2)
make.height.equalTo(view.snp.height).dividedBy(7) // *
}
问题是最后一个要点。当我将设备从纵向旋转到横向时,原来旋转前的宽度变成旋转后的高度。这导致我的观点变小。
基本上,我想替换标记为
*
就这样:
make.height.equalTo(max(view.snp.height, view.snp.width)).dividedBy(7)
但我不认为
max(a, b)
是Snapkit还是
布局约束
应用程序编程接口。
当然,还有其他的表达方式“等于任何长度的长度”,对吗?
P.S.我没有给这个贴标签
snapkit
因为我也会接受一个使用
布局约束
应用程序编程接口。