2013-10-04 18 views
2

我正嘗試使用以下代碼爲iOS7上的UIToolbar中的UIBarButtonItem設置自定義背景圖像。工具欄中的UIBarButtonItems是否可以在iOS7中使用背景圖像?

NSString *imageName = selected ? @"background_view_baritem_selected" : @"background_view_baritem_normal"; 
UIImage *backgroundImage = [UIImage imageNamed:imageName]; 
UIImage *resizableBackgroundImage = [backgroundImage resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)]; 
[self setBackgroundImage:resizableBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

在調試程序,使用QuickLook的,我可以驗證resizableBackgroundImage是什麼(當被選擇時,通常圓形的灰色矩形圓角藍色矩形)我期望的那樣。但是,不會出現背景圖像。此代碼在iOS6上按預期工作(顯示背景圖像)。 iOS7強加自己的意志,而不是在這種情況下顯示背景,或者是我錯過的其他東西?

+0

我做在我的代碼調用的確切順序,我的自定義圖像在iOS 7中顯示得很好(我現在在我的代碼中,只是再次檢查它)。我也嘗試過,並且沒有導航欄的自定義圖像,並且無論哪種方式都可以正常工作。 – HalR

+1

如果你絕望,你可以嘗試將'customView'屬性設置爲包含圖像的'UIImageView'。希望這會有所幫助;) – nemesis

+0

@HaIR這似乎適用於NavigationBar,但不適用於工具欄。 –

回答

2

至於我,我只能通過使用自定義視圖來解決它。 例如,如果你有一些出路的UIBarButtonItem

@property (nonatomic, weak) IBOutlet UIBarButtonItem *item; 

.....在你的代碼,你可以做這樣的事情:

UIImage *configImage = /* initialize necessary image */; 
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0,0, item.width, 32)]; 
[btn setBackgroundImage:configImage forState:UIControlStateNormal]; 
[btn setTitle:item.title forState:UIControlStateNormal]; 
btn.titleLabel.font = [UIFont systemFontOfSize:14]; 
[btn addTarget:item.target action:item.action forControlEvents:UIControlEventTouchUpInside]; 

item.customView = btn; 
+0

我自己沒有使用IBOutlet(我的視圖沒有XIB),但是這對我來說是適用於iOS 7的;我曾嘗試過許多其他解決方案都失敗了。謝謝。 – Max

相關問題