Swift 3: UIImage, когда установлено изображение шаблона и измененный цвет оттенка не показывает изображение

В Swift 3, когда я пытаюсь программно изменить цвет изображения, загруженного из ресурсов, следующим образом:

let imageView = UIImageView()
let image = UIImage(named: "imageFromAssets")?.withRenderingMode(.alwaysTemplate)
imageView.contentMode = .scaleAspectFit
imageView.tintColor = GREEN_UICOLOR // Change to custom green color
imageView.image = image

Изображение отображается в виде квадратного блока ниже:

 Шаблон изображения с зеленым оттенком, который не работает

Однако забавно то, что это не всегда происходит. С некоторыми другими изображениями в активах он работает и меняет оттенок на зеленый:

 Шаблон изображения с зеленым оттенком, который работает

Почему здесь противоречивое поведение? И вообще, как мне добавить изображение шаблона в ресурсы и иметь возможность программно изменить его цвет? Я понимаю, что когда я не изменяю изображение на шаблонное изображение, оно работает, но я не могу этого сделать, потому что хочу изменить оттенок изображения.

13 голосов | спросил leonardloo 19 Jam1000000amThu, 19 Jan 2017 10:53:27 +030017 2017, 10:53:27

2 ответа


0

Для шаблонных изображений фон должен быть прозрачным, а не белым.

ответил Jon Rose 19 Jam1000000amThu, 19 Jan 2017 11:13:39 +030017 2017, 11:13:39
0

Шаблонные изображения работают с использованием свойства непрозрачности изображения.

Если у вас есть изображение с прозрачным фоном, то прозрачный фон остается прозрачным, и ВСЕ остальное изображение меняется на крошечный цвет.

Если у вашего изображения нет прозрачного фона. Скажем, у него белый фон. Тогда все изображение будет изменено на цвет оттенка (как вы видите в своем примере).

Чтобы это исправить, вам нужно придать этому изображению прозрачный фон.

Стоит также отметить, что вам не нужен этот код. Если вы используете изображение только в режиме шаблона, просто выберите режим рендеринга в каталоге ресурсов.

ответил Fogmeister 19 Jam1000000amThu, 19 Jan 2017 11:15:46 +030017 2017, 11:15:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132