self.view.frame.size.height在iphone 4s而不是480上返回568

时间:2014-05-08 07:48:21

标签: objective-c ios7

viewDidLoad方法我的视图控制器中,我调用self.view.frame.size.height,返回568.但是[[UIScreen mainScreen] bounds].size.height返回480.不应该视图的帧大小始终小于窗口大小?

我在iphone 4s上进行测试。我尝试将子视图的长度设置为[[UIScreen mainScreen] bounds].size.height,但这还不足以覆盖屏幕。然后我检查了self.view.frame.size.height的大小,这就是我遇到568这对我没有任何意义的方式。

2 个答案:

答案 0 :(得分:2)

viewDidLayoutSubviews将返回正确的高度。

即,在视图层次结构方法self.view.frame.size.height

中调用viewDidLayoutSubviews

答案 1 :(得分:1)

viewDidLoad中,观看次数没有最终版本。通常,它们的大小取自XIB / Storyboard。

例如,如果为i5设计xib,则控制器视图在viewDidLoad中将为568像素高。但是,在屏幕上显示之前会计算新的布局(取决于您的自动布局限制或自动调整遮罩)。

解决您的问题 - 永远不要使用屏幕高度。如果要覆盖整个控制器,请改为使用其高度self.view.frame.size.height

也不要忘记添加约束或设置自动调整遮罩。