使用自动布局隐藏视图和相邻间隙

Posted

技术标签:

【中文标题】使用自动布局隐藏视图和相邻间隙【英文标题】:Hide a view and adjacent gap with autolayout 【发布时间】:2014-01-08 10:42:25 【问题描述】:

我有以下视图配置:

有时我有一张图片要放在图像视图中,有时我没有。如果没有要显示的图片,我希望Title标签向右延伸,占据图片的整个空间以及标签和图片之间的空隙。我为图像视图的宽度分配了一个“小于或等于”约束,所以我猜如果图像视图的图像属性为空,它可能会得到零宽度。但是如何消除图像视图和标题标签之间的差距?我知道通过为间隙约束定义一个出口可以从代码中实现,但是是否可以通过更简单的方式,也许来自接口构建器?

【问题讨论】:

【参考方案1】:

不,这在 XIB 中是不可能的。我已经提交了增强请求(甚至在发货之前就开始了)。多归档!获得的票数越多,发生的可能性就越大。

我们最终在 ImageView 的子类上添加了一个出口,我们指向我们想要离开的约束,并且在子类中当图像为 nil 时禁用约束(我们使用不同的技巧在不同的地方禁用它,因为没有一种简单的方法)。

【讨论】:

现在安装和卸载约束非常容易,但我还不知道有一种方法可以完全自动执行“图像为零,所以跳过这个约束”的事情。

以上是关于使用自动布局隐藏视图和相邻间隙的主要内容,如果未能解决你的问题,请参考以下文章

自动布局不垂直添加间隙

UIStackViews 之间的自动布局最小间隙

如何使用自动布局在对象之间创建间隙

如何使用自动布局水平设置三个按钮而没有间隙

自动布局:删除视图时相邻视图的后备约束

使用自动布局隐藏视图并重新定位其他视图