UINavigationController && UIStatusBar 導航控制器 && 狀態欄

【注】導航控制器本身只是一個系統級別的組件,並沒有視圖,它只是一個邏輯,頁面間層級的邏輯。
【注】頁面層級 和 頁面間層級 的區別?
頁面層級——ViewController中父視圖和子視圖的層級關係。
頁面間層級——ViewController之間的層級。
註冊頁面和登陸頁面是什麼關係?
頁面間層級,登陸就是根節點

導航控制器實際上是一個ViewController的容器,它的內部存儲邏輯使用的是“棧結構”(先進後出)。

/* 棧的特殊名詞 */
1.第一個進入棧的元素叫棧基(棧底)
2.最後一個進入棧的元素叫棧頂
3.元素進入棧叫入棧
4.元素移出棧叫出棧
/* 棧的特殊名詞 */

push方法(入棧)
pop方法的行爲(出棧)
popViewController 返回上一級頁面
popToRootViewController 返回根視圖
popToViewController 返回指定的ViewController

隱藏狀態欄要修改info.plist文件
添加View controller-based status bar appearance
並且將值設置爲NO
設置 Navigation 的title顏色和statusBar 的顏色

 NSDictionary *navTitle = [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor],NSForegroundColorAttributeName, nil];
    [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
    [self.navigationController.navigationBar setTitleTextAttributes:navTitle];
    self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;

/*
由於ViewController並沒有銷燬,只是壓棧了。
ViewController所在的內存區域被NC持有,所以self.view還存在。
沒有銷燬,就沒有創建。所以loadView 和 viewDidLoad 都不會在執行。
當內存告警時,我們如果將self.view置空,那麼再次出現時會調用loadView和viewDidLoad。
*/

//視圖將要呈現
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    //隱藏NavigationBar
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    /*
     NavigationBar 和 toolBar 
     這兩個都是公共區域。OS X中的上導航也是公共區域。根據程序的不同,顯示不同的內容。
     toolBar 默認是隱藏的,暫時放下不說
     NavigationBar 可以自定義很多內容,左右按鈕,title,titleView等。
     */
    //設置navigationBar最底層的View的背景色
//    self.navigationController.navigationBar.backgroundColor = [UIColor redColor];

    //設置navigationBar最上層的View的顏色
//    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

    //設置NavigationBar的背景圖片
    /*
     UIBarMetricsDefault 設置豎屏(人像模式)的背景
     UIBarMetricsCompact 設置橫屏(風景模式)的背景

     上導航的背景圖片嚴格要求高度,如果高度不夠,會被拉伸
     工作中美工會使用高度爲64的圖片進行展示,避免狀態欄的顏色影響整體效果
     */
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBg.png"]
     forBarMetrics:UIBarMetricsDefault];

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBg-32.png"]
     forBarMetrics:UIBarMetricsCompact];
}
發佈了31 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章