有没有办法在没有代码的情况下使用自动布局来缩小约束?

Posted

技术标签:

【中文标题】有没有办法在没有代码的情况下使用自动布局来缩小约束?【英文标题】:Is there a way to shrink a constraint with autolayout without code? 【发布时间】:2014-02-28 21:59:17 【问题描述】:

在不使用代码的情况下,我基本上是在尝试实现这张图片中的“预期结果”:

我想要对“Hello!”的约束标签在屏幕高度较短时缩小其长度。 正如您在“实际结果”中看到的那样,底部的按钮不在屏幕上。我希望图像视图具有固定的宽度和高度。

我知道我可以为约束创建 IBOutlets 并通过类似帖子建议 (autolayout - make height of view relative to half superview height) 的代码来实现,但我会尽量避免使用代码。

附带问题:如果在 IB 中无法做到这一点,那么在代码中做到这一点的最佳方法是什么?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

是的。拥有这种“分割高度”约束的最简单方法是在图像视图和屏幕顶部之间放置一个“标题”视图,并将“Hello”标签嵌入到这个新的标题视图中。然后添加一个约束来保持“Hello”标签在标题视图中垂直居中。

要使标题视图保持正确的大小,请添加约束以使标题视图的顶部固定在屏幕顶部,并将标题视图的底部固定在图像视图的顶部。

然后您只需添加约束以将按钮和图像视图固定在屏幕底部。 (或者,请参阅下面 Sulthan 的评论。)

在 Xcode 5.1(测试版)中,有 UI 可以做出更一般的约束,包括您想要的约束,但您必须像这样或在早期版本的代码中这样做。

【讨论】:

我会先修复相对于超级视图中心的图像 Y,然后再使用“页脚”视图,因为按钮周围的垂直约束也会遇到同样的问题。

以上是关于有没有办法在没有代码的情况下使用自动布局来缩小约束?的主要内容,如果未能解决你的问题,请参考以下文章

如何在情节提要失败的情况下使用大量表格视图单元格和自动布局约束来布局复杂视图

UICollectionViewCell 和自动布局缩放

限制某个范围之间的自动布局约束

如何使用自动布局来移动视图

有没有办法询问 AutoLayout 约束视图的高度?

如何在启用自动布局的情况下更改 iOS6 中的 UIView 大小?