如何在ViewController中获取根视图的子视图的实际框架

时间:2014-10-31 03:15:51

标签: ios xib

我有一个视图和一个带有约束的UIView类型的子视图,因此它的宽度等于其超级视图。(我使用auto Layout) 但是,当我尝试在

中的viewController中获取此子视图的frame属性时
  - (void)viewDidLoad {
 NSLog(@"%@",NSStringFromCGRect(self.subview.frame));//get subview's frame
}

方法,我总是得到{{0, 20}, {600, 320}},这意味着它的宽度是600。

但是实际宽度是320,这是否意味着调用此方法时该子视图尚未布局,如何在此方法中获得此实际宽度?

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

子视图的框架在viewDidLoad中无效 - 它还没有布局。将代码移至viewDidLayoutSubviews。

如果您发现自己有依赖关系需要查看viewDidLoad中的框架,那么您可能没有正确设计约束。查找可以在视图之间添加更多关系的区域。如果这没有帮助,请尝试以编程方式修改约束 - 使用自动布局时,您几乎不想查看或明确更改视图的框架。