2014-10-31 83 views
0

我有一个观点和一个子视图是UIView型与约束,这样它的宽度等于它的父(我用auto Layout) 然而,当我尝试得到这个子视图中的viewController的框架财产如何获得根视图的子视图的实际帧ViewControtroller

- (void)viewDidLoad { 
NSLog(@"%@",NSStringFromCGRect(self.subview.frame));//get subview's frame 
} 

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

但实际宽度为320,这也意味着该子视图还没有当这个方法被调用时已经被覆盖,我怎么能得到这个实际的宽度在这种方法?

任何帮助表示赞赏,谢谢。

+0

这听起来不对。 'UIViewController'默认没有'subview'属性。你是否创建了这个属性?你如何将subView添加到视图? – anthonyliao 2014-10-31 03:22:33

+0

@anthonyliao是我有这个插座属性是子视图的属性 – 2014-10-31 03:26:24

+0

它会给你在viewDidAppear正确的结果。 viewDidLoad获取子视图的帧太早了。 – rdelmar 2014-10-31 04:21:18

回答

0

子视图的框架在viewDidLoad中无效 - 它尚未布置。将您的代码移到viewDidLayoutSubviews。

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

相关问题