视图加载时更改约束常量无效

时间:2016-06-16 11:49:59

标签: ios uiimageview autolayout uipageviewcontroller

我的UIPageViewController包含简单的UIViewController。 VC的视图在顶部包含UIImageView(纵横拟合),在底部包含UITextView。 ImageView的LayoutConstraints是:

  • 固定宽度:具有VC级别的插座
  • 固定高度:哪个出口到VC-Class
  • 中心X等于超级视图centerX
  • Top等于Superviews MarinTop(+8)

ImageView的LayoutConstraints是:

  • Top等于ImageView底部
  • 底部等于超级视图MarginBottom(+8)
  • 宽度等于超视宽度(Multiplicator为0.8)

这可以按预期工作。

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

因此,我计算实际图像的大小,并为两个LayoutConstraints设置常量。值是正确的但ImageView不会更改。

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

我做错了什么?

3 个答案:

答案 0 :(得分:2)

尝试在viewDidLayoutSubviews中更新您的观点:

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

希望这有帮助。

答案 1 :(得分:0)

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

dispatch_async(dispatch_get_main_queue(), {

})

答案 2 :(得分:0)

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

[view setNeedsLayout];
[view layoutIfNeeded];

将imageview的大小调整为新图像的大小。