我知道目前 iPhone/iPad 顶部的状态栏(包含时间、电池和网络连接)对于非视网膜屏幕为 20 像素,对于视网膜屏幕为 40 像素,但为了未来证明我的应用程序,我希望无需硬编码值即可确定这一点。是否可以通过编程计算出状态栏的高度?
[UIApplication sharedApplication].statusBarFrame.size.height
。但由于所有尺寸均以磅为单位,而不是像素,因此状态栏高度始终等于 20。
Update.看到这个答案被认为有帮助,我应该详细说明。
状态栏高度确实等于 20.0f 点except以下情况:
- 状态栏已被隐藏
setStatusBarHidden:withAnimation:
方法,其高度等于0.0f点;
- 正如 @Anton 这里指出的,在电话应用程序之外的来电期间或在录音会话期间状态栏高度等于 40.0f 点。
还有一种情况是状态栏会影响您的视图高度。通常,视图的高度等于给定方向的屏幕尺寸减去状态栏高度。但是,如果在显示视图后对状态栏进行动画处理(显示或隐藏它),状态栏将更改其框架,但视图will not,您必须在状态栏动画之后(或在动画期间,因为状态栏高度在动画开始时设置为最终值)手动调整视图大小。
更新2。还有一个用户界面方向的情况。状态栏不考虑方向值,因此状态栏高度值portrait模式是[UIApplication sharedApplication].statusBarFrame.size.height
(是的,默认方向始终是纵向,无论您的应用程序 info.plist 说什么),景观 - [UIApplication sharedApplication].statusBarFrame.size.width
。确定 UI 在外部时的当前方向UIViewController
and self.interfaceOrientation
不可用,请使用[UIApplication sharedApplication].statusBarOrientation
.
iOS7 的更新。尽管状态栏的视觉样式发生了变化,但它仍然存在,其框架的行为仍然相同。我得到的关于状态栏的唯一有趣的发现 – 我分享:你的UINavigationBar
's tiled背景也会平铺到状态栏,这样您就可以实现一些有趣的设计效果或只是为状态栏着色。这也不会以任何方式影响状态栏高度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)