程序员

谈一谈iOS开发中info.plist中的View contro

2017-04-26  本文已影响1373人  林夕不昔

1、简介:

这是一个BOOL类型的属性,有YES和NO两个取值。
字面意思即———基于视图控制器的状态栏外观。

2、应用:

修改状态栏外观通常有两种做法:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];  
//相对于上面的接口,这个接口可以动画的改变statusBar的前景色  
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
- (UIStatusBarStyle)preferredStatusBarStyle;
-(BOOL)prefersStatusBarHidden;
- (UIViewController *)childViewControllerForStatusBarStyle;
- (void)setNeedsStatusBarAppearanceUpdate;
- (UIStatusBarStyle)preferredStatusBarStyle;
注意点:
-(BOOL)prefersStatusBarHidden;
- (UIViewController *)childViewControllerForStatusBarStyle;

-(UIViewController *)childViewControllerForStatusBarStyle
{
return self.topViewController;
}

- 意思就是说,不要调用我自己(就是UINavigationController)的preferredStatusBarStyle方法,而是去调用navigationController.topViewController的preferredStatusBarStyle方法,这样写的话,就能保证当前显示的UIViewController的preferredStatusBarStyle方法能影响statusBar的外观。

###### - (void)setNeedsStatusBarAppearanceUpdate;
- 这个方法会通知系统去调用当前UIViewController的preferredStatusBarStyle方法。

## 3、划重点
说了那么多,设置状态栏的外观到底跟View controller-based status bar appearance有什么关系呢,现在揭晓:
- 当取值为YES时,表示控制器对状态栏的设置的优先级高于application
 通过application对状态栏进行的设置将不起作用。

- 当取值为NO时,则以application为准,控制器设置状态栏preferredStatusBarStyle是无效的的根本不会被调用。

在开发中要根据实际情况来设置View controller-based status bar appearance的值。






上一篇 下一篇

猜你喜欢

热点阅读