更改约束常量对视图加载没有影响

Change Constraints constant on view load has no effect

我有 UIPageViewController,其中包含简单的 UIViewController。 VC 的视图在顶部包含一个 UIImageView(适合纵横比),在底部包含一个 UITextView。 ImageView 的 LayoutConstraints 是:

ImageView 的 LayoutConstraints 是:

这按预期工作。

但是当 VC 加载并显示图像时,我想更改 imageView 的大小。有最小和最大尺寸,如果图像视图更小或更大,则需要调整其大小。否则 imageview 必须获取图像的大小。

因此我计算了实际图像的大小并为两个 LayoutConstraint 设置了常量。这些值是正确的,但 ImageView 没有改变。

我尝试在 viewWillLayoutSubviews 中设置它们,但没有改变。

我做错了什么?

尝试在 viewDidLayoutSubviews 中更新您的视图:

- (void) viewDidLayoutSubviews {
 // setup your constraints here
}

希望对您有所帮助。

在下面提供的块中写下您的更改约束代码

dispatch_async(dispatch_get_main_queue(), {

})

尝试将 ImageView 和文本字段之间的垂直间距更改为灵活的 (>=0)。如果这不能解决问题,请添加:

[view setNeedsLayout];
[view layoutIfNeeded];

将图像视图的大小调整为新图像的大小后。