视图负载上的更改约束常量没有影响
Posted
技术标签:
【中文标题】视图负载上的更改约束常量没有影响【英文标题】:Change Constraints constant on view load has no effect 【发布时间】:2016-06-16 11:49:58 【问题描述】:我有UIPageViewController
,其中包含简单的UIViewController
s。 VC 的视图在顶部包含一个UIImageView
(方面适合),在底部包含一个 UITextView。
ImageView 的 LayoutConstraints 是:
ImageView 的 LayoutConstraints 是:
顶部等于 ImageView 底部 底部等于超级视图 MarginBottom (+8) 宽度等于父视图宽度(乘数为 0.8)这按预期工作。
但是当 VC 被加载并且有图像要显示时,我想改变 imageView 的大小。有最小和最大尺寸,如果图像视图更小或更大,则需要调整其大小。否则,imageview 必须获取图像的大小。
所以我计算实际图像的大小并为两个 LayoutConstraints 设置常量。这些值是正确的,但 ImageView 没有改变。
我尝试将它们设置为viewWillLayoutSubviews
,但没有任何变化。
我做错了什么?
【问题讨论】:
您是否在控制台中看到无法同时满足所有约束的警告? 【参考方案1】:尝试在 viewDidLayoutSubviews 中更新您的视图:
- (void) viewDidLayoutSubviews
// setup your constraints here
希望这会有所帮助。
【讨论】:
【参考方案2】:在下面提供的块中编写您的更改约束代码
dispatch_async(dispatch_get_main_queue(),
)
【讨论】:
【参考方案3】:尝试将 ImageView 和文本字段之间的垂直间距更改为灵活 (>=0)。如果这不能解决问题,请添加:
[view setNeedsLayout];
[view layoutIfNeeded];
将 imageview 的大小调整为新图像的大小后。
【讨论】:
以上是关于视图负载上的更改约束常量没有影响的主要内容,如果未能解决你的问题,请参考以下文章