2013-09-23 52 views
2

我必須使用6.1 SDK與一些UIBarButtonItems其中TintColor被編程設置在viewWillAppear中編譯iOS應用程序。如何構建適用於iOS 6.1和iOS 7下運行時我改變的UIBarButtonItem的TintColor?

UIBarButtonItem leftButton = new UIBarButtonItem(...); 
leftButton.TintColor = UIColor.FromRGB(231, 231, 231); 

在此產生。

Custom UIBarButtonItem TintColor on 6.1

我升級我的iPhone 7.0,但我還需要打造爲6.1 SDK的向後兼容設備(商業上的原因)。

當我建立一個使用6.1 SDK的應用程序,並在iPhone上運行iOS 7.0上運行它,工具欄看起來是這樣的。

Custom UIBarButtonItem TintColor on 7.0

已經通過了iOS 7的用戶界面過渡指南閱讀,我嘗試設置一個UIWindow的TintColor,看是否能有效果。它沒。

在有趣的事情 - 在這種形式下,當我顯示ActionSheet,該ActionSheet被駁回後,的取消,並從「黑」到「白」的保存按鈕變化的背景。我目前正在調查爲什麼會發生這種情況。

如果我不能改變TintColor編程的iOS 7.0下,我想爲這些按鈕創建自定義背景圖片的,是這樣的。

Greyish Button

而且使用了setBackgroundImage覆蓋現有背景。

在此先感謝。

更新 - 13年9月24日

poupou的回答向我指出的WWDC視頻(link),它給我的解決方案,在8時37分 - 我需要設置導航欄的TintColor,而不是設置特定按鈕的TintColor。

NavigationBar.TintColor = UIColor.FromRGB(231, 231, 231); 

回答

1

我嘗試設置一個UIWindow的TintColor,看是否能有效果。它沒。

它不應該 - 但是,如果你在其他一些UI元素設置TintColor那麼它將在主UIWindow在一組的優先級。

有關於TintColor的WWDC 2013(會話214)的整個會議以及它如何在iOS7中工作(這是Tic Tac Toe示例中的一個)。

如果你需要運行/排除一些特定於iOS的版本代碼,你可以這樣做:

if (UIDevice.CurrentDevice.CheckSystemVersion (7,0)) { 
    // iOS 7.0 and later 
} else { 
    // iOS 6.1 and earlier 
} 
相關問題