Xcode autolayout:在高度和宽度之间保持最小值

fam*_*mer 3 xcode constraints ios autolayout swift

我使用UIView的固定宽高比,所以它是方形的.然后我将固定的尾随和前导空间设置为屏幕的边框,它们是相同的.并保持垂直居中的位置.所以结果我在屏幕的中心有正方形,前后有一些相等的空间,如果屏幕更宽的方形更大.这在纵向方向上非常有效.但是当我使用横向方向时,基于前导和尾随空间的正方形的大小变得大于设备的高度,因此它不适合.它是一种基于约束和选择最小二维的方形吗?对iPhone和iPad而言,屏幕边框的间距是不同的?

Ken*_*ses 6

为Top添加不等式约束,使间距大于或等于最小值.

这实际上会与您的其他约束产生冲突.您可以通过降低前导和尾随约束的优先级来解决此问题.不幸的是,这带来了歧义.当superview比square更宽时,Leading约束或Trailing约束是否应该保持?

实际上,你不想要持有.那会把广场放到一边或另一边.你想让广场居中.因此,删除尾随约束,而是添加约束以使方块在其超视图中居中.

所以,总结一下:

  • 两个约束,纵向和横向,以保持方形居中.
  • 保持空间大于或等于最小值的Top约束.
  • 保持空间等于最小值但降低其优先级的主要约束.

当superview比它更高时,Top约束将很容易满足(空间将大于最小值).因此,Leading约束将控制正方形的大小.

当超视图宽度高于高视图时,领先约束将尝试使方块如此大以至于其顶部和底部超出其超视图.但是,Top约束将阻止这种情况发生.系统将允许前导约束被打破,因为它的优先级较低,但它仍然会尽可能地接近满足它.这将确保广场的大小合适.