ios - 从 NIB 加载 UIView - 帧大小错误

标签 ios

好的,所以我在界面生成器中创建了一个 UIView。我正在使用 AutoLayout 并将此 View 的一个 subview 固定到所有四个边。

这是我不明白的地方。当我使用 loadNibNamed 加载此 NIB 文件时。然后我得到对 View 的引用。我为此 View 设置了框架。然而,当我访问 subview (使用 [containerView viewWithTag:1])时,它的框架没有自动调整大小。是什么赋予了?如果更改父 View 的框架,为什么 subview 框架不也更改?

这没有任何意义。

为什么不能只加载一个 UIView,设置它的框架并适当调整所有 subview (特别是因为我正在使用 AutoLayout!)?

编辑:明确地说,我想做的就是能够在 IB 中使用适当的 AutoLayout 约束定义一个 UIView 层次结构,然后能够加载和显示屏幕上的 View 有时大小不同?为什么这么难?

最佳答案

当您更改 View 的几何形状时,UIKit 不会立即更新 subview 的几何形状。它会分批更新以提高效率。

运行事件处理程序后,UIKit 会检查是否需要对屏幕窗口层次结构中的任何 View 进行布局。如果找到任何内容,它会通过解决您的布局约束(如果有的话)然后发送 layoutSubviews 来布置它们。

如果您想解决约束并立即布置 View 的 subview ,只需将 layoutIfNeeded 发送到 View 即可:

someView.frame = CGRectMake(0, 0, 200, 300);
[someView layoutIfNeeded];
// The frames of someView.subviews are now up-to-date.

关于ios - 从 NIB 加载 UIView - 帧大小错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909167/

相关文章:

ios - Twixtor 像慢动作 iOS

iphone - UIPinchGestureRecognizer 没有被调用

ios - 执行 segue 后 ViewDidLoad 再次调用

ios - 切换具有相同数据的两个 View

ios - 在 ios 中拉伸(stretch)图像

ios - Swift/如何更改xib文件中按钮文本的颜色

ios - 对 url 字符串进行编码

ios - 当行向左滑动时切换操作

ios - 适用于 iOS 和 macOS 的 Swift 框架

ios - 如何摆脱搜索栏上方和下方的黑线?