Uibarbuttonitem изображение не отображается, а вместо этого отображается белый прямоугольник в размере изображения, почему?
с любым изображением, которое я пытаюсь intialize UIBarButtonItem, его просто показывает белый фон в размере изображения. Даже когда я устал в interface builder, результат тот же. Все эти изображения при использовании с другими объектами работает отлично.
Как я могу решить это??
3 ответов
только альфа-значения в изображении используются для создания изображения кнопки панели. Любое изображение, которое вы предоставляете, преобразуется в изображение с оттенками белого цвета на основе альфа-значений.
Итак, учитывая, что ваше изображение полностью белое, ясно, что у вас нет прозрачности.
на рекомендации имейте это сказать:
- используйте формат PNG.
- используйте чистый белый с соответствующей Альфой.
- Do не включать тень.
- использовать сглаживание.
- если вы решили добавить скос, убедитесь, что это 90° (чтобы помочь вам сделать это, представьте себе источник света расположен в верхней части значка).
- для значков панели инструментов и панели навигации создайте значок, который измеряет около 20 x 20 пикселей.
- для значков панели вкладок создайте значок, который измеряет около 30 x 30 пикселей.
Примечание: значок, который вы предоставляете для панель инструментов, панели навигации и вкладка баров используется в качестве маски для создания значок вы видите в своем приложении. Он нет необходимости создавать цветной значок.
однако, вы можете использовать пользовательский вид чтобы получить полноцветное изображение, как показывает этот вопрос:
могу ли я иметь UIBarButtonItem с цветным изображением?
Это все-таки перебор, хотя и было бы лучше придерживаться рекомендаций и использовать обычную кнопку с правильно отформатированные изображения.
в ios 7 и далее это поможет
UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];
В 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]
Это показывает, Х2 barButtons на rightHandSide. Чтобы показать левый просто измените на
navigationItem.leftBarButtonItem = [barButtonItem1, barButtonItem2]