iOS переопределяет `navBarButtonColor` при использовании PNG
Описание проблемы
В моем приложении кнопка поиска панели навигации настроена следующим образом:
static navigatorButtons = {
leftButtons: [
{
id: 'back-nav-button',
icon: require('../assets/images/icons/arrow-left.png')
}
]
};
Кнопка работает как на iOS и Android, но на iOS она синяя. Я понимаю, что это желаемое поведение и что цвет можно изменить, установив navBarButtonColor
, но проблема в том, что это разноцветная кнопка - значит, я хочу, чтобы кнопка просто содержала цвета изображения PNG, а не navBarButtonColor
,
Я пытался установить navBarButtonColor
в null
, transparent
, но ничего не работает.
Итак, мой вопрос, есть ли способ заставить значки навигационной панели принимать цвет PNG, как в случае с Android?
Шаги по воспроизведению / фрагменты кода / скриншоты
Просто запустите любое приложение RNN на iOS с помощью простого static navigatorButtons = ...
используя местный разноцветный PNG, и вы увидите, что цвета значка будут перезаписаны.
Среда
- React Native Navigation версия: 1.1.473
- React Родная версия: 0.55.3
- Платформа (ы) (iOS, Android или оба?): IOS
- Информация об устройстве (Симулятор / Устройство? Версия ОС? Отладка / Выпуск?): Android Emulator on Debug
2 ответа
На iOS UIBarButtonItem
использует изображения, созданные с помощью альфа-канала исходного изображения. Чтобы отобразить реальное изображение (а не маску альфа-канала), вам нужно изменить режим рендеринга вашего изображения на alwaysOriginal
Хотя, глядя на документацию класса React Native Image, я не вижу renderingMode
имущество
Нам удалось найти обходной путь для этого. Установив disableIconTint
свойство кнопки для true
, он отключает переопределение цвета значка. Смотрите следующий пример:
static navigatorButtons = {
leftButtons: [
{
id: 'back-nav-button',
icon: require('../assets/images/icons/arrow-left.png'),
disableIconTint: true // Add this line to use the PNG's color
}
]
};