使用 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 应用程序处理扩展高度状态栏的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章