2012-12-30 75 views
0

在iOS 6中,您可以訪問到一個新的方法外觀API中:iOS 6外觀API UIBarButtonSystemItemAdd不起作用?

- (void)setBackgroundImage:(UIImage *)backgroundImage 
       forState:(UIControlState)state 
       style:(UIBarButtonItemStyle)style 
      barMetrics:(UIBarMetrics)barMetrics 

所以,你可以爲每個導航按鈕樣式不同的背景。事情是,它看起來不適用於UIBarButtonSystemItemAdd風格,但它適用於比如說UIBarButtonItemStyleDone。以下是我的代碼片段:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0f) 
{ 
    // Works well 
    [barButton setBackgroundImage:[[UIImage imageNamed:@"nav-button-done.png"] stretchableImageWithLeftCapWidth:7 topCapHeight:0] 
         forState:UIControlStateNormal 
          style:UIBarButtonItemStyleDone 
         barMetrics:UIBarMetricsDefault]; 

    // Not working 
    [barButton setBackgroundImage:[[UIImage imageNamed:@"nav-button-done.png"] stretchableImageWithLeftCapWidth:7 topCapHeight:0] 
         forState:UIControlStateNormal 
          style:UIBarButtonSystemItemAdd 
         barMetrics:UIBarMetricsDefault]; 
} 

任何人都有線索爲什麼它不工作?

回答

2

注意事項的UIBarButtonItem的方法聲明:

- (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state style:(UIBarButtonItemStyle)style barMetrics:(UIBarMetrics)barMetrics 

問題是,UIBarButtonSystemItemAdd不是有效UIBarButtonItemStyle。支持的樣式包括:

typedef enum { 
    UIBarButtonItemStylePlain, 
    UIBarButtonItemStyleBordered, 
    UIBarButtonItemStyleDone, 
} UIBarButtonItemStyle; 

你混爲一談UIBarButtonItemStyle與UIBarButtonSystemItem,他們是不是真的一樣,它只是忽略了價值上設置並恢復到默認類型。

+0

哎呀,所以沒有簡單的方法只用UIApparence輕鬆添加Add按鈕(帶有加號的按鈕)? – allaire

+0

沒有那是一個SystemItem按鈕,這些的關鍵是你得到統一的系統外觀。您可以創建一個看起來像它,但它必須是某種自定義按鈕。不那麼辛苦,只是更多的工作:) –

+0

謝謝你的解釋! – allaire