在我的應用程序中,我將導航欄設爲深藍色。
iOS6中的新漸變效果導致導航欄顯得更輕(請參閱下文)。如何調整UINavigationBar tintColor以補償iOS6中的新漸變效果?
如果我調整顏色更暗,以補償iOS6的,它會出現在iOS5中過暗。
什麼使他們看起來相同(或幾乎相同)的最佳方式是什麼?
檢測操作系統版本並設置不同的色調顏色?使用背景圖片?或者是否有可用於更改漸變行爲的樣式設置?
在我的應用程序中,我將導航欄設爲深藍色。
iOS6中的新漸變效果導致導航欄顯得更輕(請參閱下文)。如何調整UINavigationBar tintColor以補償iOS6中的新漸變效果?
如果我調整顏色更暗,以補償iOS6的,它會出現在iOS5中過暗。
什麼使他們看起來相同(或幾乎相同)的最佳方式是什麼?
檢測操作系統版本並設置不同的色調顏色?使用背景圖片?或者是否有可用於更改漸變行爲的樣式設置?
您可以實現此目的的一種方法是使用背景圖像並使用iOS 5.0中引入的外觀代理進行設置。
如果您創建的圖像是一個很薄的垂直切片(例如寬度爲1px,高度爲44px,並且視網膜圖像翻倍)並將其添加到您的包中,則可以將導航欄背景圖像設置爲全部在您的應用中使用以下方法導航欄:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBarImage"] forBarMetrics:UIBarMetricsDefault];
如果您在應用啓動時運行該代碼行,例如在你的appDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
以下方法然後每在的導航欄應用程序將看起來相同。使用像這樣的圖像的優點是,無論操作系統版本和未來可能會或可能不會出現的任何更改,您的應用程序總是看起來一樣。
請注意外觀代理API僅在iOS 5.0中添加,因此它不適用於舊版本的iOS。對於外觀代理的一個很好的概述,我建議看WWDC 2011視頻會話114
感謝您的詳細解答。背景圖像可能是保持完全相同外觀的最佳方式。我很驚訝tintColor的外觀變化如此激烈。我想也許我錯過了一些東西。我最終只是簡單地解決了這個問題,並且稍微重新設計了UI,以適應兩種版本。 – Cadin
我有這個問題爲好,並採取了色調的顏色,而不是做這個固定:
navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
navigationController.navigationBar.backgroundColor = [UIColor blackColor];
請注意,這意味着您必須更改用戶界面/ xib文件,因爲您已將樣式更改爲黑色半透明 - 我必須將所有內容都推下44點。現在
,如果你想在你的默認啓動圖像導航欄導航欄應該看看的iOS 5和iOS 6
同樣這也是一個問題。有或沒有,它不會匹配較舊的操作系統。 – Cadin