看板 Knuckles_note
作者 標題 [Xcode] 修改 Navigation Bar 的顏色
時間 2014年09月02日 Tue. AM 03:27:46
參考:
到 storyboard ,設定 Navigation Controller → Navigation Bar 的屬性
![[圖]](http://knuckles.disp.cc/pic/pick/20140902002.png)
取消勾選 Translucent ,不要使用透明
Bar Tint 就是 Navigation Bar 的顏色
Title Color 是文字的顏色
Tint 是按鈕的顏色
在 iOS7.1 的執行結果會像這樣
![[圖]](http://knuckles.disp.cc/pic/pick/20140902003.png)
但在 iOS6.1 會變成這樣
![[圖]](http://knuckles.disp.cc/pic/pick/20140902004.png)
因為在 iOS7 之前沒有 Bar Tint 的設定
而 Tint 就是 Navigation Bar 的顏色
所以要在程式裡針對 iOS6 另外設定
在 AppDelegate.m 裡的 -application:didFinishLaunchingWithOptions:
加上
//取得iOS使用的版本
float iOSversion = [[[ UIDevice currentDevice ] systemVersion ] floatValue ];
//取得目前使用的NavgationBar
UINavigationBar *navBar = [UINavigationBar appearance];
if(iOSversion<7){
UIColor *blue = [UIColor colorWithRed:0 green:0 blue:1.0 alpha:1.0];
//或是用 UIColor *blueColor = [UIColor blueColor]; 也可以
navBar.tintColor = blueColor;
}
在 iOS6 的結果
![[圖]](http://knuckles.disp.cc/pic/pick/20140902005.png)
如果想要取消漸層的效果,像iOS7.1一樣,可以再加上
//設定一張空的背景圖,再設定背景顏色
[navBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
navBar.backgroundColor = blueColor;
iO6 的結果
![[圖]](http://knuckles.disp.cc/pic/pick/20140902006.png)
在 iOS7 時,最上面的 Status Bar 的背景也會變得很 Navigation Bar 一樣
而圖示的顏色預設是黑色的,如果背景顏色太深會看不清楚
要將圖示改成白色的話
到專案設定的「info」,在下面任一項目上點✚,插入一個新項目
![[圖]](http://knuckles.disp.cc/pic/pick/20140902007.png)
輸入「View controller-based status bar appearance」
![[圖]](http://knuckles.disp.cc/pic/pick/20140902008.png)
後面 Value 選擇「No」
接著到 AppDelegate.h 的 -application:didFinishLaunchingWithOptions:
加上這行即可
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
iOS7.1的執行結果
![[圖]](http://knuckles.disp.cc/pic/pick/20140902009.png)
=================== 測試記錄 =================
在 iOS6.1 若是在程式裡設定 navBar.barTintColor = ...
程式執行會當掉
有看到有文章說,應該要用偵測navBar是否有barTintColor屬性,來決定要用什麼方法
UINavigationBar *navBar = [UINavigationBar appearance];
if([navBar respondsToSelector:@selector(setBarTintColor:)]){
NSLog(@"iOS7");
navBar.barTintColor = [UIColor blueColor];
}
但測試的結果在 iOS7.1 判斷式會不成立
--
※ 作者: Knuckles 時間: 2014-09-02 03:27:46
※ 編輯: Knuckles 時間: 2014-09-02 17:20:23
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 5868
回列表(←)
分享