【问题标题】:Refresh Auto Layout when view is removed删除视图时刷新自动布局
【发布时间】:2015-10-14 22:29:33
【问题描述】:

我正在尝试将自动布局用于简单的界面。

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

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

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

【问题讨论】:

  • 不要删除视图,而是对其进行高度约束,并在您不想看到它时将其设置为 0。其余视图应相对于该图像的底部
  • @GrzegorzKrukowski 在生命周期中什么时候最好将高度约束设置为 2?
  • 有 updateConstrains 方法。

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


【解决方案1】:

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

当您删除图像视图时,适当地更改约束的活动状态:

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

如果图像视图曾经恢复到视图,请执行相反的操作。 注意确保在所有情况下在激活之前先停用,以避免出现关于冲突的经典日志消息。

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多