Можно установить фоновое изображение для 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];
Мало того, что фон не появляется, ни одно из других поведений также не работает (но они прекрасно работают при добавлении этих элементов кнопки на панель навигации)
1 ответ
Решение
Вы должны попробовать следующий метод, чтобы сделать то же самое.
Настройка пользовательского представления в 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];
Мы можем установить любое представление в UIBarButtonItem с помощью метода инициализации CustomView. Мы могли бы установить ImageView. Но ImageView не обрабатывает события UIControl.