工具栏中的UIBarButtonItems可以在iOS7中有背景图像吗?

时间:2013-10-04 19:13:59

标签: ios ios7 uibarbuttonitem uitoolbar

我正在尝试使用以下代码为iOS7上的UIBarButtonItem中的UIToolbar设置自定义背景图片。

    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是否强加了它的意志而不是在这种情况下显示背景,还是我缺少的其他东西?

1 个答案:

答案 0 :(得分: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;