Изображение UIBarButtonItem не отображается, и вместо этого отображается белый прямоугольник в размере изображения. Почему?
С любым изображением, которое я пытаюсь инициализировать UIBarButtonItem, он просто показывает белый фон в размере изображения. Даже когда я устал в построителе интерфейса, результат тот же. Все эти изображения при использовании с другими объектами прекрасно работают.
Как я могу решить эту проблему?
Ответы
Ответ 1
Для создания изображения кнопки панели используются только альфа-значения. Независимо от того, какое изображение вы предоставляете, оно преобразуется в изображение с оттенками белого, основанное на значениях альфа.
Поэтому, если ваше изображение полностью белое, ясно, что у вас нет прозрачности.
рекомендации говорят следующее:
- Используйте формат PNG.
- Используйте чистый белый цвет с соответствующей альфа.
- Не включайте тень.
- Используйте сглаживание.
- Если вы решили добавить скос, убедитесь, что он равен 90 ° (чтобы помочь вам сделать это, представьте себе источник света расположенный в верхней части значка).
- Для значков панели инструментов и панели навигации создайте значок, который измеряет около 20 x 20 пикселей.
- Для значков на панели вкладок создайте значок размером около 30 х 30 пикселей.
Примечание. Значок, который вы указываете для панели инструментов, панели навигации и вкладку бары используются в качестве маски для создания значок, который вы видите в своем приложении. Это нет необходимости создавать полноцветный значок.
Однако вы можете использовать пользовательский вид для получения полноцветного изображения, как показывает этот вопрос:
Можно ли создать UIBarButtonItem с цветным изображением?
Это немного лучше, но лучше всего придерживаться рекомендаций и использовать обычную кнопку с соответствующим образом отформатированным изображением.
Ответ 2
В ios 7 и далее это поможет
UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];
Ответ 3
В Swift 3
Я обнаружил, что следующие работы - здесь показаны как массив из более чем одного barButtonItem
let barButtonItem1 = UIBarButtonItem( image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal) , style: .plain ,target: self, action: #selector(yourAction))
let barButtonItem2 = UIBarButtonItem(image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal) , style: .plain, target: self, action: #selector(yourAction))
navigationItem.rightBarButtonItems = [barButtonItem1, barButtonItem2]
Это показывает x2 barButtons на rightHandSide.
Чтобы показать слева, просто измените на
navigationItem.leftBarButtonItem = [barButtonItem1, barButtonItem2]