Когда я добавляю значок к a UIBarButtonItem
через Интерфейсного Разработчика значок отображен белый. Когда я добавляю тот же файл значка программно к другому UIToolbar
, значок отображен черный. Почему?
UIImage *image = [UIImage imageNamed:@"icon.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:image forState:UIControlStateNormal];
rootViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:reloadButton] autorelease];
Все, что сказал Jongsma, правильно, нужно использовать сообщение initWithImage:style:.
Следующая проблема заключается не в том, как вы создаете UIBarButtonItem
, а в том, куда вы его назначаете. Вы создаете его с помощью UIBarButtonItemStylePlain, который, как правило, должен отображать контур иконки белым цветом, но правому ButtonItem UINavigationItem (как и левому) не разрешен UIBarButtonItemStylePlain. Он неявно преобразуется в UIBarButtonItemStyleBordered. В стиле bordered иконка отображается "как есть", то есть черной с небольшим градиентом.
Я думаю, если вы хотите, чтобы элемент был белым в bordered barButton, вам придется коснуться самого изображения.
В коде вы устанавливаете UIButton в качестве подпредставления UIBarButtonItem. UIBarButtonItem уже является кнопкой, поэтому вам не следует добавлять еще одну кнопку в качестве подпредставления.
Попробуйте следующее:
UIImage *image = [UIImage imageNamed:@"icon.png"];
rootViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithImage:image] autorelease];