2011-09-21 61 views
0

我需要工具欄中的自定義圖標(黃色工具欄背景上的黑色圖標)。 我嘗試過UIBarButtonItem的initWithImage構造函數,但是這種情況下 是使用alpha值顯示的圖標,而且似乎沒有辦法通過 來更改基本的白色圖標顏色。我結束了使用UIButton,但它會好得多, 只是改變默認的圖標顏色,這有可能嗎?的initWithImage的參數更改默認圖標顏色是iOS工具欄

UIImage *buttonImage = [UIImage imageNamed:iconName]; 

UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithImage:buttonImage style:UIBarButtonItemStylePlain target:nil action:nil]; 

回答

0

閱讀說明:風格:目標:動作:

圖像0​​ 該項目的形象。如果零圖像不顯示。

欄上顯示的圖像來源於此圖像。如果此圖像太大而無法放在條上,則會縮放以適合該條。通常,工具欄和導航欄圖像的大小爲20 x 20點。源圖像中的alpha值用於創建圖像 - 不透明值將被忽略。

除alpha外的所有內容都被忽略。工具欄是黑色和白色。
子類或使用其他UI框架,如three20,如果你真的需要那裏的顏色。

1

您可以通過設置色調要使工具欄黃色:

toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5]; 

如果你想定製的UIBarButtonItem使用自定義圖像,顏色等......就像你在UIButton的獲得,一種選擇是創建一個類將UIButton封裝爲UIBarButtonItem中的自定義視圖。這裏是我的自定義類 - 希望它幫助:

@interface ENBarButtonImageItem : UIBarButtonItem 
{ 
    UIButton *_button; 
} 

@implementation ENBarButtonImageItem 

- (id)initWithFrame:(CGRect)frame 
       image:(UIImage*)image 
    backgroundImage:(UIImage*)bgImage 
{ 
    _button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [_button setFrame:frame]; 

    self = [super initWithCustomView:_button]; 
    if (self) 
    { 
     if (image) 
      [_button setImage:image forState:UIControlStateNormal]; 

     if (bgImage) 
      [_button setBackgroundImage:bgImage forState:UIControlStateNormal]; 

    } 
    return self;  
} 

- (id)initWithFrame:(CGRect)frame 
       image:(UIImage*)image 
    backgroundImage:(UIImage*)bgImage 
      target:(id)target 
      action:(SEL)selector 
{ 
    self = [self initWithFrame:frame image:image backgroundImage:bgImage]; 
    if (self) 
    { 
     [_button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside]; 
    } 

    return self; 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
    [_button release]; 
} 

- (void)addTarget:(id)target action:(SEL)selector forControlEvents:(UIControlEvents)controlEvents 
{ 
    [_button addTarget:target action:selector forControlEvents:controlEvents]; 
} 

- (void)setImage:(UIImage *)image forState:(UIControlState)state 
{ 
    [_button setImage:image forState:state]; 
} 

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state 
{ 
    [_button setImage:image forState:state]; 
} 
+0

是的,這基本上是我現在有,但問題是UIButton的這種行爲是不同的,在操作方法我只有UIButton的指針,我不能使用酥料餅presentPopoverFromBarButtonItem和處理popover現在有點棘手... – Janci