可以在导航栏中为UIBarButtonItem设置背景图像,但不能在底部工具栏中设置背景图像

所以这项工作时,将项目添加到导航栏,但是当我通过界面生成器添加到设置在底部栏中的工具栏,背景图像不显示。

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项添加到导航栏时,它们可以正常工作)

你应该尝试下面的方法来做同样的事情。

在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事件。