一、有關狀態欄的隱藏
1.1、方式一:提示:控制器之間的狀態欄不會相互影響?(下面是?iOS9?之后的設置,不支持 iOS 9以前設備)
<1>、在info.plist里面添加下面代碼為YES
View controller-based status bar appearance
need-to-insert-img
<2>、在控制器里面定義一個屬性
@property(nonatomic,assign) BOOL statusHiden;
<3>、重寫狀態欄的一個方法
- (BOOL)prefersStatusBarHidden{? ? return self.statusHiden; }
<4>、改變狀態欄的隱藏與顯示
隱藏狀態欄
self.statusHiden = YES;// 刷新狀態欄[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
顯示狀態欄
self.statusHiden = NO;// 刷新狀態欄[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
二、有關狀態欄樣式設置
2.1、狀態欄樣式
typedef NS_ENUM(NSInteger, UIStatusBarStyle) {? ? //默認樣式,黑字透明狀態欄,適合用于背景色為亮色的頁面? ? UIStatusBarStyleDefault? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 0, // Dark content, for use on light backgrounds? ? //白字透明狀態欄,適合用于背景色為暗色的頁面? ? UIStatusBarStyleLightContent? ? NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds? ? // iOS7.0以前黑底白字,iOS7以后跟UIStatusBarStyleLightContent效果一樣? ? UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,? ? // iOS7.0以前啟動頁為灰底白字,iOS7以后跟UIStatusBarStyleLightContent效果一樣? ? UIStatusBarStyleBlackOpaque? ? ? NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2, } __TVOS_PROHIBITED;
2.2、方式一:提示:控制器之間的狀態欄不會相互影響?(下面是?iOS9?之后的設置,不支持?iOS 9?以前設備)
<1>、在info.plist里面添加下面代碼為YES
View controller-based status bar appearance
<2>、在控制器里面定義一個屬性
@property(nonatomic,assign) NSInteger barStyle;
<3>、重寫狀態欄樣式的一個方法
// 狀態欄的樣式- (UIStatusBarStyle)preferredStatusBarStyle{? ? return self.barStyle;}
<4>、改變狀態欄的隱藏與顯示
狀態欄黑色樣式
self.barStyle = UIStatusBarStyleDefault;[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
狀態欄白色樣式
self.barStyle = UIStatusBarStyleLightContent;[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
三、提示
3.1、info.plist文件中,View controller-based status bar appearance項設為YES,則View controller對status bar的設置優先級高于application的設置。
為NO則以application的設置為準,view controller的prefersStatusBarHidden以及preferredStatusBarStyle方法無效,是根本不會被調用的。