删除视图时刷新自动布局

时间:2015-10-14 22:29:33

标签: ios cocoa-touch autolayout interface-builder nslayoutconstraint

我正在尝试将Auto Layout用于简单的界面。

有时,根据服务器收到的信息,我们需要删除UIImageView(当没有要显示的图像时)。

如果我只是做[image removeFromSuperview],那么图像下的所有内容都会将其约束应用于超级视图的顶部,而不是“商家描述”标签。

我尝试过更新框架,但显然不允许这样做。我尝试使用不同的优先级标签对商家描述和VIP折扣进行PIN码,但显然该选项在新版Xcode中消失了。

1 个答案:

答案 0 :(得分:0)

您可以在代码中激活和停用约束。在IB中创建两个约束,一个用于存在图像视图的布局,另一个用于没有它。创建连接到每个约束的IBOutlet。取消选中“已安装”框,无论您认为哪个不是默认值:

IB constraint configuration

删除图像视图时,请相应地更改约束的活动状态:

[imageViewPresentConstraint setActive:NO];
[imageViewAbsentConstraint setActive:YES];

如果图像视图已恢复到视图,请执行相反操作。 N.B。请确保在所有情况下都要在激活前停用,以避免出现有关冲突的经典日志消息。