更改约束常量对视图加载没有影响
Change Constraints constant on view load has no effect
我有 UIPageViewController
,其中包含简单的 UIViewController
。 VC 的视图在顶部包含一个 UIImageView
(适合纵横比),在底部包含一个 UITextView。
ImageView 的 LayoutConstraints 是:
- 固定宽度:有一个出口到 VCs-Class
- 固定高度:有一个出口到 VCs-Class
- 中心 X 等于父视图中心 X
- Top 等于 Superviews MarinTop (+8)
ImageView 的 LayoutConstraints 是:
- 顶部等于 ImageView 底部
- Bottom 等于 superviews MarginBottom (+8)
- 宽度等于父视图宽度(乘数为0.8)
这按预期工作。
但是当 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];
将图像视图的大小调整为新图像的大小后。
我有 UIPageViewController
,其中包含简单的 UIViewController
。 VC 的视图在顶部包含一个 UIImageView
(适合纵横比),在底部包含一个 UITextView。
ImageView 的 LayoutConstraints 是:
- 固定宽度:有一个出口到 VCs-Class
- 固定高度:有一个出口到 VCs-Class
- 中心 X 等于父视图中心 X
- Top 等于 Superviews MarinTop (+8)
ImageView 的 LayoutConstraints 是:
- 顶部等于 ImageView 底部
- Bottom 等于 superviews MarginBottom (+8)
- 宽度等于父视图宽度(乘数为0.8)
这按预期工作。
但是当 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];
将图像视图的大小调整为新图像的大小后。