渲染视图中的自动布局不会更新其框架

Posted

技术标签:

【中文标题】渲染视图中的自动布局不会更新其框架【英文标题】:Auto Layout in rendered view doesn't update its frames 【发布时间】:2014-12-02 12:07:44 【问题描述】:

我有一个从 xib 创建的视图,上面有各种标签。我没有将此视图添加到我的屏幕上,而是在上下文中渲染它以从中创建一个 UIImage,然后用户可以将其导出。

视图使用自动布局根据标签的内容重新定位标签。当我将此视图添加到超级视图并将其显示在屏幕上时,所有内容都已正确定位,但如果我只是在上下文中渲染它,则不会应用任何自动布局约束;所有标签的大小都与它们在原始 xib 中的位置完全相同。

如何让视图应用其约束?

我尝试了以下方法但没有成功:

view.translatesAutoresizingMaskIntoConstraints = FALSE;
[view setNeedsUpdateConstraints];
[view setNeedsLayout];
[view setNeedsDisplay];
[view layoutSubviews];

【问题讨论】:

【参考方案1】:

只需使用layoutIfNeeded

[yourView layoutIfNeeded];

这将为您提供更新的框架。 translatesAutoresizingMaskIntoConstraints 用于释放/获取约束。您可以根据需要使用它。

【讨论】:

以上是关于渲染视图中的自动布局不会更新其框架的主要内容,如果未能解决你的问题,请参考以下文章

自动布局中的错位视图警告

以编程方式从超级视图中删除视图后更新约束/框架(自动布局)

自动布局不会在 iOS 8-Xcode 6 中立即更新帧

UILabel 有时不能正确换行(自动布局)

从 Xib 加载视图在自动布局后调整框架子视图的大小

自动更新自动布局中的框架[关闭]