Ios 展开“方形视图”以使用“自动布局”填充矩形超级视图

Ios 展开“方形视图”以使用“自动布局”填充矩形超级视图,ios,autolayout,interface-builder,Ios,Autolayout,Interface Builder,在我的一个视图控制器中,我有一个方形控件,我希望根据用户的设备调整其大小。应用程序将始终以纵向模式运行。我对控件有一个纵横比约束,以使其保持方形 我将控件嵌入到容器视图中。容器具有将其附着到内容视图左右边缘的约束,以及将其与容器上方和下方的其他控件隔开的约束。根据iPhone型号的不同,容器视图的顶部/底部可以比左侧/右侧(iPhone 4)更长,或者其左侧/右侧可以比顶部/底部(iPhone 6)更长。我希望方形控件水平居中,固定在容器顶部,并希望它展开以填充容器视图,同时保持其外观 据我所知

在我的一个视图控制器中,我有一个方形控件,我希望根据用户的设备调整其大小。应用程序将始终以纵向模式运行。我对控件有一个纵横比约束,以使其保持方形

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

据我所知,我无法固定边缘,或者某些约束将被打破,但当我仅固定顶部时,控件将收缩为零。我在控制装置上使用了压缩阻力,但没有效果


如果有一个不需要容器视图的解决方案,那就好了。使用容器似乎更容易控制。

这样的情况通常可以通过将降低优先级的等式约束与所需优先级的不等式配对来解决

因此,例如,正方形的前缘等于其superview的前缘(优先级为900)的约束,以及正方形的底边小于或等于其superview的底部(优先级为所需)的约束

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

顺便说一下,压缩阻力和内容拥抱优先级仅与具有固有大小且仅与该固有大小相关的视图相关。容器
UIView
没有固有的大小,因此这些优先级是不相关的