當修改導航欄、狀態欄的時候,一定要慎重,因爲這個可能會影響所有頁面的內容。
基本的修改有以下兩個步驟:
1、在 viewWillAppear
中修改,記錄下修改前的狀態
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
2、在viewWillDisappear
中恢復 ,確保不影響其他界面,記住這裏的恢復是進入這個頁面之前的狀態
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
導航欄
//隱藏導航欄
[self.navigationController setNavigationBarHidden:NO animated:YES];
//獲取導航欄的狀態
self.navigationController.navigationBarHidden
//防止視圖延伸到導航欄(狀態欄)下面去
self.edgesForExtendedLayout = UIRectEdgeNone;
狀態欄
//修改單個頁面的狀態欄
- (void)viewDidLoad {
[super viewDidLoad];
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
- (BOOL)prefersStatusBarHidden
{
return YES;//隱藏爲YES,顯示爲NO
}
//修改所有頁面的狀態欄,不需要寫代碼
//在info.plist 中添加:
//Status bar is initially hidden (value:YES)
//View controller-based status bar appearance (value:NO)
參考鏈接:
1、滑動返回中導航欄的問題
2、iOS中設置導航欄標題的字體顏色和大小
3、UIViewController的self.view佈局位置問題