狀態列的字型為黑色: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];
二、在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
UIViewController*topVC=self.topViewController;
return[topVCpreferredStatusBarStyle];
狀態列的字型為黑色: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];
}