状态栏的字体为黑色微信小程序底部导航背景色:UIStatusBarStyleDefault
状态栏的字体为白色:UIStatusBarStyleLightContent
一、在info.plist中,将Viewcontroller-basedstatusbarappearance设为NO
状态栏字体的颜色只由下面的属性设定,默认为白色:
//defaultisUIStatusBarStyleDefault
[UIApplicationsharedApplication].statusBarStyle
解决个别vc中状态栏字体颜色不同的办法
1、在info.plist中,将Viewcontroller-basedstatusbarappearance设为NO.
2、在appdelegate中:
[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleLightContent;
3、在个别状态栏字体颜色不一样的vc中
-(void)viewWillAppear:(BOOL)animated{
[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleDefault;
}
-(void)viewWillDisappear:(BOOL)animated
{
[superviewWillDisappear:animated];
[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleLightContent;
}
二、在info.plist中,将Viewcontroller-basedstatusbarappearance设为YES,或者没有设置。
Viewcontroller-basedstatusbarappearance的默认值就是YES。
如果Viewcontroller-basedstatusbarappearance为YES。
则[UIApplicationsharedApplication].statusBarStyle无效。
用下面的方法:
1、在vc中重写vc的preferredStatusBarStyle方法。
-(UIStatusBarStyle)preferredStatusBarStyle
{
returnUIStatusBarStyleDefault;
}
2、在viewDidload中调用:[selfsetNeedsStatusBarAppearanceUpdate];
但是,当vc在nav中时,上面方法没用,vc中的preferredStatusBarStyle方法根本不用被调用。
原因是,[selfsetNeedsStatusBarAppearanceUpdate]发出后,
只会调用navigationcontroller中的preferredStatusBarStyle方法,
vc中的preferredStatusBarStyley方法跟本不会被调用。
解决办法有两个:
方法一:
设置navbar的barStyle属性会影响statusbar的字体和背景色。如下。
//statusbar的字体为白色
//导航栏的背景色是黑色。
self.navigationController.navigationBar.barStyle=UIBarStyleBlack;
//statusbar的字体为黑色
//导航栏的背景色是白色,状态栏的背景色也是白色。
//self.navigationController.navigationBar.barStyle=UIBarStyleDefault;
方法二:
自定义一个navbar的子类,在这个子类中重写preferredStatusBarStyle方法:
MyNav*nav=[[MyNavalloc]initWithRootViewController:vc];
self.window.rootViewController=nav;
@implementationMyNav
-(UIStatusBarStyle)preferredStatusBarStyle
{
UIViewController*topVC=self.topViewController;
return[topVCpreferredStatusBarStyle];
}