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

时间:2013-06-14 23:09:04

标签: ios uiapplication uistatusbar

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

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

我已经提出了一个小样本项目here来证明这个问题。

由于

亚历

1 个答案:

答案 0 :(得分:1)

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

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

但是,为全屏视图控制器完全隐藏状态栏要简单得多,以便视图可以充分利用整个显示:

[UIApplication sharedApplication].statusBarHidden = NO;

你也可以在照片应用程序中做类似的事情:使用半透明状态栏样式,让用户单击一下隐藏状态栏,或者在一段时间后(当用户没有与应用程序交互时)自动隐藏状态栏)。这应该是动画的。使用方法setStatusBarHidden:withAnimation:

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


来自Apple文档:

  

<强> wantsFullScreenLayout

     

一个布尔值,指示视图是否应低于状态栏。

     

@property(nonatomic, assign) BOOL wantsFullScreenLayout

     

讨论

     

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

     

如果此属性为YES,则视图不会以这样的方式调整大小   使其重叠标签栏,但调整大小为半圆形   工具栏。无论此属性的值如何,导航   控制器始终允许视图覆盖半透明导航   杆

     

此属性的默认值为NO,这会导致视图   布局,所以它不会低于状态栏。

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