在Landscape(iPad)中statusBarFrame.height返回1024.0

Oll*_*lie 8 statusbar orientation ipad ios

我一直在使用以下代码来获取状态栏的高度:

[UIApplication sharedApplication].statusBarFrame.size.height

这在Portrait模式下完美运行并返回预期值(20.0),但当应用程序在Landscape中时,我得到1024.0的意外值!

有人能够为我阐明这一点吗?

iOS版本6.1.3

XCode版本4.6.2

cpr*_*ack 13

如果您想忘记方向或坐标相关问题,请使用此选项:

float statusBarHeight = MIN([UIApplication sharedApplication].statusBarFrame.size.height, [UIApplication sharedApplication].statusBarFrame.size.width);
Run Code Online (Sandbox Code Playgroud)


Tam*_*nad 10

您可能需要使用[UIApplication sharedApplication].statusBarFrame.size.width横向方向.与[[UIScreen mainScreen] applicationFrame]在横向方向上显示切换值相同

  • 嗨,对不起只是看到评论......当你说"因为身高相同"时,不确定你的意思.方向很重要,因为statusBarFrame使用屏幕坐标内的框架.在肖像上,高度将为您提供20,但在横向上,它是给出@Ollie正在搜索的值的宽度. (2认同)
  • 似乎在iOS 8.0(尚未更新到8.0.2)宽度/高度**不是**横向方向切换.因此状态栏高度为statusBarFrame.size.height,无论哪个方向.所以你必须检查iOS版本. (2认同)