2

我正在尝试使用以下代码在 iOS7 上为 a 设置自定义背景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 是强加其意志而不显示背景,还是我缺少的其他东西?

4

1 回答 1

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;
于 2013-10-15T10:09:09.040 回答