使用 WantsFullScreenLayout 应用程序处理扩展高度状态栏的最佳实践?

Posted

技术标签:

【中文标题】使用 WantsFullScreenLayout 应用程序处理扩展高度状态栏的最佳实践?【英文标题】:Best Practice to handle the extended height status bar with a WantsFullScreenLayout app? 【发布时间】:2013-06-14 23:09:03 【问题描述】:

在将wantsFullScreenLayout设置为YES的应用中,处理扩展高度状态栏的最佳做法是什么,即在存在电话或VoIP应用时显示额外的状态栏,或者个人热点功能何时开启?

UIApplicationWillChangeStatusBarOrientationNotification 通知(或UIApplication 的相应委托方法是正确的方法,还是我忽略了一些明显的东西?

我已经建立了一个小示例项目here 来演示这个问题。

谢谢

亚历克斯

【问题讨论】:

【参考方案1】:

扩展高度的状态栏只能在 iPhone 或 iPod 上以纵向显示。

当状态栏框架发生变化时,您可以使用UIApplicationWillChangeStatusBarFrameNotification(不是UIApplicationWillChangeStatusBarOrientationNotification)收到通知。当界面方向发生变化时,也会发布此通知。在框架更改时,您可以手动重新布局视图。考虑[UIApplication sharedApplication].statusBarFrame.size.height 的值。加长状态栏为40分。

但是,对于全屏视图控制器来说,完全隐藏状态栏要简单得多,以便视图可以利用全屏显示:

[UIApplication sharedApplication].statusBarHidden = NO;

您也可以在照片应用中执行类似的操作:使用半透明状态栏样式,让用户通过单击隐藏状态栏或在一段时间后自动隐藏(当用户不与应用交互时) )。这应该是动画的。使用方法setStatusBarHidden:withAnimation:

请注意,wantsFullScreenLayout 是视图控制器属性,而不是 UIApplication 的属性。当并非所有视图控制器都以全屏模式呈现时,您需要小心。


来自 Apple 文档:

想要FullScreenLayout

一个布尔值,指示视图是否应覆盖在状态栏之下。

@property(nonatomic, assign) BOOL wantsFullScreenLayout

讨论

当视图控制器呈现它的视图时,它通常会缩小 查看,使其框架不会与设备的状态栏重叠。 将此属性设置为 YES 会导致视图控制器调整其大小 查看,使其充满整个屏幕,包括下方的区域 状态栏。 (当然,要做到这一点,托管 视图控制器本身必须调整大小以填满整个屏幕, 包括状态栏下方的区域。)您通常会设置 如果您有半透明状态栏,则此属性为 YES 并希望您的视图内容在该视图后面可见。

如果此属性为 YES,则视图的大小不会以如下方式调整 使其与标签栏重叠,但调整大小以重叠半透明 工具栏。不管这个属性的值是多少,导航 控制器总是允许视图覆盖半透明导航 酒吧。

这个属性的默认值是NO,这会导致视图是 布局,使其不会与状态栏重叠。

这个答案适用于 ios 6,我会在 iOS 7 可用时更新这篇文章。

【讨论】:

以上是关于使用 WantsFullScreenLayout 应用程序处理扩展高度状态栏的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

显示模态视图时使 iPhone 状态栏消失?

iPad Safari 应用程序的cornerRadius 值是多少?

iOS7 - 搜索结果 tableview 下推 20px

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?