超视图的约束更改未反映在子视图中

时间:2014-07-11 06:04:13

标签: ios objective-c autolayout

目的:

我有4个视图排列在另一个之下。视图还包含子视图。
假设视图按其顺序命名为 A B C D 安排。
一次,我只需要显示 B C

实施

  • 使用autolayout通过storyboard添加相应的约束。
  • NSLayoutConstraint次观看 B C 创建Height constraints个出口。
  • 在需要时更改约束出口的constant属性,如下所示:

    _heightConstraintOfC.constant = ORGINAL_VALUE_OF_C;
    _heightConstraintOfB.constant = 0.00;
    

    _heightConstraintOfB.constant = ORGINAL_VALUE_OF_B;
    _heightConstraintOfC.constant = 0.00;
    

我得到了什么:

视图的行为符合预期,但当我将height constant更改为zero时,子视图保留在新重叠视图后面的相同位置。

enter image description here

在屏幕截图中,“登录”按钮位于视图 B 内,但即使视图 C 与其重叠,也会显示。

我尝试过的事情:

我尝试隐藏视图,即在显示 C 时隐藏 B 。这有效,但在使用autolayout时似乎并不正确。

我也尝试过使用

[self.view layoutIfNeeded][self.view layoutSubviews][self.view setNeedsLayout]。这没有任何帮助。

我的理解是您需要为视图中的所有内容添加约束,然后手动更新每个约束。这对我来说似乎不可行。

请提供您宝贵的建议或解决此问题的方法。谢谢!

0 个答案:

没有答案
相关问题