【问题标题】:After constraint update, when does UIView's bounds change?约束更新后,UIView 的边界什么时候改变?
【发布时间】:2018-06-15 20:52:51
【问题描述】:

在我的视图控制器的viewDidLoad 中,我正在调整UIImageView 的约束以反映其图像的纵横比。完成后,我想知道图像视图的更新边界。 UI 中的边界 更新,但是当viewWillLayoutSubviewsviewDidLayoutSubviews 被调用(每个只调用一次)时,边界仍然是我更改纵横比之前的原始边界。我应该何时检查边界并进行相关更改?

【问题讨论】:

  • 图像视图是视图控制器view 的直接子视图吗?还是嵌套更深?

标签: ios uiview uiviewcontroller autolayout nslayoutconstraint


【解决方案1】:

更新viewDidLoad 中的约束后,使用以下任一方法更新它们

 [yourImageViewOL setNeedsDisplay];
 [yourImageViewOL layoutIfNeeded];   //Allows you to perform layout before the drawing cycle happens. -layoutIfNeeded forces layout early

然后您可以在 - (void)layoutSubviews; 方法中查找更新的边界,因为 layoutIfNeeded 会自动调用此方法。

从 iOS 6.0 开始,当使用基于约束的布局时,基本实现会应用基于约束的布局,否则它什么也不做。

【讨论】:

    【解决方案2】:

    尝试覆盖方法-updateViewConstraints

    - (void)updateViewConstraints {
        [super updateViewConstraints];
         /// your code here
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 2021-04-10
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多