Можно установить фоновое изображение для 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.

Другие вопросы по тегам