顯示廣告
隱藏 ✕
Disp BBS guest 註冊 登入(i) 線上人數: 1
看板 Knuckles_note
作者 Knuckles (站長 那克斯)
標題 [Xcode] 修改 Navigation Bar 的顏色
時間 2014年09月02日 Tue. AM 03:27:46


參考:



 
到 storyboard ,設定 Navigation Controller → Navigation Bar 的屬性
[圖]
 
取消勾選 Translucent ,不要使用透明
Bar Tint 就是 Navigation Bar 的顏色
Title Color 是文字的顏色
Tint 是按鈕的顏色

在 iOS7.1 的執行結果會像這樣
[圖]
 

但在 iOS6.1 會變成這樣
[圖]
 

因為在 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 的結果
[圖]


如果想要取消漸層的效果,像iOS7.1一樣,可以再加上

        //設定一張空的背景圖,再設定背景顏色
        [navBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
        navBar.backgroundColor = blueColor;

iO6 的結果
[圖]
 


在 iOS7 時,最上面的 Status Bar 的背景也會變得很 Navigation Bar 一樣
而圖示的顏色預設是黑色的,如果背景顏色太深會看不清楚
要將圖示改成白色的話

到專案設定的「info」,在下面任一項目上點✚,插入一個新項目
[圖]
 
輸入「View controller-based status bar appearance」
[圖]
 
後面 Value 選擇「No」

接著到 AppDelegate.h 的 -application:didFinishLaunchingWithOptions:
加上這行即可

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

iOS7.1的執行結果
[圖]
 


=================== 測試記錄 =================
在 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 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇