1

因此,这在将项目添加到导航栏时有效,但是当我通过界面构建​​器将其添加到底部栏中设置的工具栏时,背景图像不会显示。

UIBarButtonItem *resetButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Reset" style:UIBarButtonItemStylePlain target:self action:@selector(resetCriteria:)];
UIImage *img = [UIImage imageNamed:@"someImage.png"];
    img = [img stretchableImageWithLeftCapWidth:5 topCapHeight:20];
    [resetButtonItem setBackgroundImage:img forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

self.toolbarItems   = [NSArray arrayWithObjects: resetButtonItem, nil];

不仅背景不会出现,其他任何行为都不能正常工作(但在将这些 barbutton 项目添加到导航栏时它们工作正常)

4

1 回答 1

2

您应该尝试以下方法来做同样的事情。

在 UIBarButtonItem 中设置自定义视图。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 30, 30);
[btn setImage:[UIImage imageNamed:@"someImage.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(resetCriteria:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *Item = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.toolbarItems   = [NSArray arrayWithObject:Item];
[Item release];

我们可以使用 CustomView init 方法在 UIBarButtonItem 中设置任何视图。我们可以设置 ImageView。但 ImageView 不处理 UIControl 事件。

于 2012-08-14T18:00:46.987 回答