在我的一个视图控制器中,我有一个方形控件,需要根据用户的设备调整大小。该应用程序将始终以纵向运行。我在控件上有一个长宽比约束,以使其保持正方形。

我将控件嵌入到容器UIView中。容器具有将其附加到内容视图左右边缘的约束,并且具有使其与容器上方和下方的其他控件隔开的约束。根据iPhone型号的不同,容器视图的顶/底边可以比左侧/右侧长(iPhone 4),也可以比顶/底面更长(iPhone 6)。我希望方形控件水平居中,固定在容器的顶部,并且希望它扩展以填充容器视图,但保持其外观不变。

据我所知,我无法固定边缘或某些约束会破裂,但是当我仅固定顶部时,控件将缩小为零。我在控件上玩过抗压缩性,但没有效果。

如果有不需要容器视图的解决方案,那很好。似乎使用容器控制起来会更容易。

最佳答案

通常可以通过将优先级降低的等式约束与要求优先级的不等式配对来解决这种情况。

因此,例如,在优先级为900时,正方形的前边缘等于其父视图的前边缘的约束;在要求的优先级时,为正方形的底边小于或等于其父视图的底部的约束。

当 super 视图的高度大于宽度的宽度时,前缘将能够重合,从而将满足约束条件,并且底部将小于 super 视图的底部,从而将满足约束条件。当 super 视图短于宽时,一旦正方形的底部与 super 视图的底部重合,正方形将无法增长,因为这是必需的约束。前沿的约束将被打破,这是可以的,因为它不是必需的,但是自动布局系统仍将尝试尽可能地靠近,这就是使正方形尽可能大的原因。

顺便说一下,压缩抗性和内容拥抱优先级仅与具有内在大小且仅与该内在大小有关的视图相关。容器UIView没有内部大小,因此这些优先级无关紧要。

关于ios - 展开方形 View 以使用自动布局填充矩形 super View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33250171/

10-12 00:15