如何添加自动布局约束以编程方式将视图置于剩余空间的中心(参见下面的示例图片)?
目前,我在底部添加了一个容器视图,然后我将视图置于容器视图中心,但我想知道是否还有其他解决方案而无需使用容器视图。
答案 0 :(得分:47)
您需要添加间隔视图才能执行此操作。
让我们从一些观点开始:
我将设置粉红色视图以占据根视图的前70%。首先,我将它固定到根视图的所有四个边缘:
然后我将以两种方式编辑底部约束。首先,我确保第一项是粉红色视图,然后我设置乘数为0.7。然后我更新粉红色视图的框架:
接下来我将添加间隔视图。我不希望间隔视图在运行时可见,所以我会隐藏它。隐藏的视图仍然参与布局。在设置约束之前,我只是将间隔符放在蓝色视图的左侧:
现在我将创建约束以使间隔从粉红色视图的底部延伸到根视图的底部。宽度并不重要,所以我只需将它固定在超视图的左边缘并使其变薄:
现在我已准备好设置蓝色视图。首先,我会给它一个固定的大小:
其次我将它水平放在根视图中:
第三,我将它的垂直中心固定在垫片的垂直中心:
这就是我需要的所有限制。我将更新所有帧以进行检查:
我可以使用助理编辑器中的预览来测试它:
请注意,间隔视图在预览中不可见,但仍然参与布局。
答案 1 :(得分:0)
被接受的答案没有解决程序化的选择(您在问题中强调了这一点)。
有一种编程方式,而不必使用iOS 9中引入的UILayoutGuide
向视图层次结构添加其他虚拟视图。
The documentation for UILayoutGuide
足够详细。
This article还添加了更多说明(Here是文章中的更新代码)。