iOS開發-UINavigationBar和Status Bar實用技巧


iOS7之后關於UINavigationBar和Status  Bar都發生了一系列的改變,如果不需要兼容iOS7之后的設備,按照網上有些資料去解決問題會踩到一些坑。在iOS 7中,我們可以修改每個View Controller中狀態欄的外觀,而iOS7之前的狀態欄都是白色風格。iOS7之前設置背景顏色還需要搞個背景View覆蓋,而iOS7只需要設置一下barTintColor顏色即可。

UINavigationBar設置

1.設置背景顏色:

[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];

效果如下:

 

2.Translucent設置成透明度,設置成YES會有一種模糊效果:

 [self.navigationController.navigationBar setTranslucent:YES];  

設置為NO的效果:

 

3.設置背景圖片,圖片樣式需要根據情況適用,調用方法為setBackGroundImage:

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"FlyElephant.png"] forBarMetrics:UIBarMetricsDefault];

4.設置NavigationBar標題大小及顏色,之前設置是通過UITextAttributeFont,UITextAttributeTextColor,UITextAttributeTextShadowColor和UITextAttributeTextShadowOffset設置,現在需要都根據NS開頭的屬性去設置:

    NSDictionary  *textAttributes=@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:20]};
    
    [self.navigationController.navigationBar setTitleTextAttributes:textAttributes];

5.NavigationBar設置中間的標題或者自定義View:

    [self.navigationItem setTitle:@"旅行"];
    [self.navigationItem setTitleView:[UIImage imageNamed:@"FlyElephant"];

6.單個或多個左右Item設置:

單個leftItem設置:

   UIBarButtonItem  *leftBarButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"BackIcon"] style:UIBarButtonItemStylePlain target:self action:@selector(popBack)];
    [leftBarButton setTintColor:[UIColor colorWithWhite:0 alpha:1]];
    self.navigationItem.leftBarButtonItem=leftBarButton;

效果如下:

 

多個rightItem設置:

    UIBarButtonItem *firstItem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:nil];
    UIBarButtonItem *secondItem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:nil];
    NSArray *rightItems=@[firstItem, secondItem];
    self.navigationItem.rightBarButtonItems=rightItems;

效果如下:

狀態欄(StatusBar)設置

iOS7之前狀態欄永遠是白色風格,我們沒有太多的空間去進行修改,iOS 7之后,我們可以修改每個控制器中狀態欄的外觀,比如說在白天和夜間模式的切換過程中我們可以修改狀態欄的顏色。狀態欄上的時間、電池指示器和Wi-Fi信號默認是暗色,如上圖所示,不過我們可以通過修改UIBarStyle然后執preferredStatusBarStyle的覆寫方法:

 [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];

最終執行的是覆寫控制器中preferredStatusBarStyle的方法:(如果上面的代碼不寫是不會執行到preferredStatusBarStyle方法的)

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

效果如下:

隱藏狀態欄只需要覆寫一下prefersStatusBarHidden即可:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

效果如下:

如果需要重新刷新一下狀態欄,可以通過setNeedsStatusBarAppearanceUpdate控制~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM