UITabBarController下面常常需要為多個ViewController設置導航欄樣式,總結了一下遇到過的為UINavigationBar添加背景圖片的幾種簡單思路
以設置背景圖片為例:
第一種,直接在視圖里面單獨設置每個視圖的UINavigationBar,適合每個頁面需要不同的導航欄樣式。
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bg_all-64"] forBarMetrics:UIBarMetricsDefault];
第二種:為各個頁面建立一個共同的BaseNavigationController,設置好背景圖片。其他視圖控制器將它繼承下來,這也可以達到一個整體設置效果。
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bg_all-64"] forBarMetrics:UIBarMetricsDefault];
第三種,在TabBarController里面寫一個方法,通過遍歷所有視圖的導航欄來設置。記得調用這個方法
- (void) createNavigationBar
{//遍歷所有視圖的導航欄
for (UINavigationController *navi in self.viewControllers)
{
[navi.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bg_all-64"] forBarMetrics:UIBarMetricsDefault];
}
} 第四種:直接更改UINavigationBar的默認樣式,這種方式和前一種的區別在於前者只是改變五個視圖的導航欄,而后者是作用在UINavigationBar上。
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg_all-64"] forBarMetrics:UIBarMetricsDefault];
