2010-10-22 176 views
0

我已經在代碼中創建了自定義欄按鈕項目。更改UIBarButtonItem顏色

UIButton* backButton = [UIButton buttonWithType:102]; // left-pointing shape! 
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; 
[backButton setTitle:@"Custom Item" forState:UIControlStateNormal]; 

// create button item -- possible because UIButton subclasses UIView! 
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
self.navigationItem.leftBarButtonItem = backItem; 

但它顯示爲深藍色。我需要獲得默認的外觀和感覺。如何設置默認的外觀和感覺?

問候,

Dilshan

回答

0

可能錯誤的問題,但是如果您擔心的外觀和你爲什麼要使用未定義UIButtonType以巧妙「指着左」按鈕有什麼感覺?左指向按鈕用於彈出備份導航堆棧,如果使用UINavigationController,我認爲它可以免費使用。

+0

可能是我使用了一個令人困惑的變量名稱。其實我需要自定義這個按鈕。預期的功能不是支持功能。 – Dilshan 2010-10-22 18:18:04

+0

那麼,你不是在尋找一個左指向的按鈕?只是想清楚約束是什麼。 – westsider 2010-10-22 19:17:52

+0

是自定義的左鍵 – Dilshan 2010-10-23 13:36:18

0

請參閱 「更改UINavigationBarButtons的顏色」

編輯:我刪除了鏈接,因爲域名是下來...

的是從谷歌緩存中的文字:


好吧,這是另一個快速提示。 「如何更改工具欄上按鈕的顏色。」當然,這可以應用於任何工具欄,但我將在UINavigationBar上演示該過程。

上圖僅顯示幾種顏色。事實上,你可以使任何你想要的顏色按鈕。太棒了!代碼也很容易做到這一點。我們想要做的第一件事是打開頭文件,無論哪個對象將使用不同顏色的導航欄按鈕,並聲明前向類UINavigationButton。您可以通過迭代UINavigationBar的子視圖,閱讀其子視圖類名稱,或者如果您擁有越獄設備,通過類轉儲UIKit來獲得此類。

將您的接口聲明之前,下面一行:

@class UINavigationButton; 

現在,申報,我們會用實際更改按鈕的顏色標頭的新方法。

- (void)changeNavigationButtonColorToColor:(UIColor *)newColor 

或者類似於上面的代碼行。

現在,打開對象的實現文件並實現上述方法。在任何地方你的文件,添加以下方法:

- (void)changeNavigationButtonColorToColor:(UIColor *)newColor { 
    for (UIView *view in self.navigationController.navigationBar.subviews) { 
      NSLog(@"%@", [[view class] description]); 
      if ([[[view class] description] isEqualToString:@"UINavigationButton"]) { 
        [(UINavigationButton *)view setTintColor:newColor]; 
      } 
    } 
    } 

正如你可以在上面看到,這其實是一個容易得多比它第一次出現是。我們首先要做的是設置一個for循環,使用NSFastEnumeration遍歷UINavigationBar的子視圖。然後我們輸出子視圖的類名,以供將來參考。如果類名是UINavigationButton,那麼我們已經看到了我們的觀點。我們所做的就是設置tintColor屬性,如果UINavigationButton。

就是這樣,我們完成了!另外,如果你想要更廣泛的範圍,我建議創建一個新的UINavigationBar類別,並在其中放置按鈕顏色改變方法。這是你的方法可以由任何使用UINavigationBar的類執行,而不必一遍又一遍地重新創建相同的方法。

請記住,後退按鈕和導航按鈕不是一回事。您將不得不單獨對後退按鈕着色。

和往常一樣,這裏有一個示例應用程序的鏈接,演示了這種代碼:NavButtonColor.zip


@Rob:是的,它的工作原理爲工具欄,太!

- (void)changeToolbarButtonColorToColor:(UIColor *)newColor { 
    for (UIView *view in self.navigationController.toolbar.subviews) {     
     if ([[[view class] description] isEqualToString:@"UIToolbarButton"]) {       
      [(UINavigationButton *)view setTintColor:newColor];    
     } 
    }  
} 

要小心:您必須在第二行使用「toolbar」,在第三行使用「UIToolbarButton」。
viewDidLoad添加以下代碼:

- (void)viewDidLoad { 
    [self changeToolbarButtonColorToColor: [UIColor colorWithRed:0.0/255 green:163.0/255 blue:224.0/255 alpha:1]]; 
} 

這一切! :)

+0

你有沒有得到這個在UIToolBar上工作?我想讓我的「購買」按鈕變爲紅色。 – Rob 2011-04-21 09:00:09

+0

我編輯我的答案:) – Manni 2011-04-21 12:51:55