好的,所以我创建了一个UIViewin interface builder.我正在使用AutoLayout,我有一个这个视图的子视图固定到所有四个方面.
这是我不明白的.当我使用加载此NIB文件时loadNibNamed.然后我得到了对视图的引用.我为这个视图设置了框架.然而,当我访问子视图(使用[ containerView viewWithTag:1])时,它的帧没有自动调整大小.是什么赋予了?如果更改父视图的帧,为什么子视图帧也不会更改?
它没有任何意义.
为什么你不能只加载一个UIView,设置它的框架并适当调整所有子视图(特别是因为我正在使用AutoLayout!)?
编辑:要清楚,我想要做的就是能够UIView在IB中使用适当的AutoLayout约束定义层次结构,然后能够在屏幕上加载和显示有时不同大小的视图吗?为什么这么难?
rob*_*off 13
更改视图的几何体时,UIKit不会立即更新子视图几何体.它批量更新以提高效率.
运行事件处理程序后,UIKit会检查是否需要布置屏幕窗口层次结构中的任何视图.如果它找到任何,它通过解决你的布局约束(如果你有的话)然后发送它来解决它们layoutSubviews.
如果要解决约束并立即布置视图的子视图,只需发送layoutIfNeeded到视图:
someView.frame = CGRectMake(0, 0, 200, 300);
[someView layoutIfNeeded];
// The frames of someView.subviews are now up-to-date.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9910 次 |
| 最近记录: |