作者:手机用户2602925213 | 来源:互联网 | 2023-05-27 12:35
我有一个按钮playButton和UIViews,myView1和myView2,它们的位置可能会在执行期间发生变化.我希望playButton的顶部比UIView1底部或UIView2底部低10个单位,取较大的值(进一步向下).我如何在代码中使用自动布局来表达这一点?我尝试将一个约束设置为更大或相等但似乎没有效果.
1> Ken Thomases..:
这是考虑它的一种方法:创建一个约束,即playButton的顶部大于或等于myView1加10的底部,另一个约束,即playButton的顶部大于或等于myView2加10的底部,并且然后是第三个约束,即playButton的顶部位于低优先级的共享超级视图的顶部.
这两个不等式将确保按钮位于两个视图之下.然而,这留下了歧义.按钮可以位于两者之下的任何位置.第三个约束不能这样满足,但自动布局系统将尽可能地接近.这解决了歧义.按钮将尽可能靠近顶部,同时仍在两个视图下方.
这实际上可以简化.您可以将其中一个不等式与低优先级相等结合起来.有一个约束,即playButton的顶部大于或等于myView1加10的底部.有第二个约束,即playButton的顶部等于 myView2的底部加10,但优先级较低.
如果myView1的底部低于myView2,那么第一个约束要求playButton低于它.第二个约束不能满足,但系统尝试尽可能接近myView2的底部.这使得按钮尽可能高,同时仍然低于myView1的底部.如果myView2的底部低于myView1,则第二个约束直接确定按钮的位置.第一个约束也得到满足,因为它是一个不平等.