在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这对我没有任何意义的方式。
答案 0 :(得分:2)
viewDidLayoutSubviews
将返回正确的高度。
即,在视图层次结构方法self.view.frame.size.height
viewDidLayoutSubviews
答案 1 :(得分:1)
在viewDidLoad
中,观看次数没有最终版本。通常,它们的大小取自XIB / Storyboard。
例如,如果为i5设计xib,则控制器视图在viewDidLoad
中将为568像素高。但是,在屏幕上显示之前会计算新的布局(取决于您的自动布局限制或自动调整遮罩)。
解决您的问题 - 永远不要使用屏幕高度。如果要覆盖整个控制器,请改为使用其高度self.view.frame.size.height
。
也不要忘记添加约束或设置自动调整遮罩。