约束更新后,UIView的边界何时发生变化?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了约束更新后,UIView的边界何时发生变化?相关的知识,希望对你有一定的参考价值。

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

答案

尝试覆盖方法-updateViewConstraints

- (void)updateViewConstraints {
    [super updateViewConstraints];
     /// your code here
}
另一答案

更新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开始,当使用基于约束的布局时,基本实现应用基于约束的布局,否则它不执行任何操作。

以上是关于约束更新后,UIView的边界何时发生变化?的主要内容,如果未能解决你的问题,请参考以下文章

如何对 UIView 上的自动布局约束引起的大小变化做出反应?

为啥我的一些 UIView 在导航后会发生变化?

滚动后 UITableViewCell 内的 UIView 中的渐变发生了变化

动画 UIView 框架不尊重约束?

UIView 的框架被翻转后发生变化

何时何地根据实际宽度更新 UITableViewCell 子视图的约束