从iOS 7开始, UIViewController
有了一个新的方法:- preferredStatusBarStyle
,可以让用户指定状态栏风格。但问题是这个方法只有在ViewController
不包含在UINavigationController
中时才起作用。大部分情况下,ViewController
不会单独使用,一般都会嵌套在UINavigationController
中的。因为不知道这一点,所以在很长一段时间内,我都很困惑,明明我已经在我的ViewController
里写了- preferredStatusBarStyle
, 却一点都不起作用。
知道了原因,接下来就简单了。我们可以写一个UINavigationController
的扩展,覆盖其默认实现,返回最上面的ViewController
的preferredStatusBarStyle
。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
用Swift来写:
1 2 3 4 5 |
|
然后,在需要使用UINavigationController
的时候,引入UINavigationController+StatusBar.h
头文件就可以了。如果你用Swift,增加了extension
就完成了。
补充:
要使用View Controller Based Status Bar Style,你可能需要在项目的的Info.plist里增加一条记录:“View controller-based status bar appearance”,并将其值设置成YES
。
参考来源:Being Objective…
示例代码(Swift):NavStatusStyle
(全文完)