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

Ios “视图加载时更改约束常量”无效,ios,uiimageview,autolayout,uipageviewcontroller,Ios,Uiimageview,Autolayout,Uipageviewcontroller,我有UIPageViewController,它包含简单的UIViewControllers。VC的视图在顶部包含一个UIImageView(aspect fit),在底部包含一个UITextView。 ImageView的布局约束包括: 固定宽度:具有VCs类的出口 固定高度:有通向VCs类的出口 中心X等于超级视图中心X 顶部等于超级视图顶部(+8) ImageView的布局约束包括: 顶部等于ImageView底部 底部等于超级视图边缘底部(+8) 宽度等于超级视图宽度(乘法器为0.

我有
UIPageViewController
,它包含简单的
UIViewController
s。VC的视图在顶部包含一个
UIImageView
(aspect fit),在底部包含一个UITextView。 ImageView的布局约束包括:

  • 固定宽度:具有VCs类的出口
  • 固定高度:有通向VCs类的出口
  • 中心X等于超级视图中心X
  • 顶部等于超级视图顶部(+8)
ImageView的布局约束包括:

  • 顶部等于ImageView底部
  • 底部等于超级视图边缘底部(+8)
  • 宽度等于超级视图宽度(乘法器为0.8)
这正如预期的那样有效

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

因此,我计算实际图像的大小,并为两个布局约束设置常量。值是正确的,但ImageView没有更改

我试图在
视图willlayoutsubviews
中设置它们,但没有更改


我做错了什么?

尝试在ViewDidLayoutSubView中更新视图:

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

希望这有帮助。

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

dispatch_async(dispatch_get_main_queue(), {

})

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

[view setNeedsLayout];
[view layoutIfNeeded];

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

您是否在控制台中看到无法同时满足所有约束的警告?