У меня есть UIImageView под названием «theImageView», с UIImage в один цвет (прозрачный фон), как левое черное сердце ниже. Как я могу изменить цвет оттенка этого изображения программно в iOS 7 или выше, в соответствии с методом оттенка, используемым в значках панели навигации iOS 7+?
Может ли этот метод также работать в WatchKit для приложения Apple Watch?
UIImage
с ,UIImageRenderingModeAlwaysTemplate
а затем установкойUIImageVIew
«stintColor
работы делает. (в моем коде ^^)Ответы:
iOS
Для приложения iOS в Swift 3, 4 или 5:
Для Swift 2:
Между тем, современное решение Objective-C:
Watchkit
В приложениях WatchKit для Apple Watch вы можете установить цвет оттенка для изображения шаблона .
Чтобы затем установить оттенок цвета в Swift 3 или 4:
Свифт 2:
Чтобы затем установить оттенок цвета в Objective-C:
Если вы используете шаблонное изображение и не применяете оттенок цвета, будет применен глобальный оттенок для вашего приложения WatchKit. Если вы не установили глобальный оттенок,
theImage
он будет окрашен в светло-голубой цвет по умолчанию при использовании в качестве изображения шаблона.источник
Вот категория, которая должна сделать свое дело
так что вы бы сделали:
источник
Я должен был сделать это в Swift, используя
extension
.Я думал, что поделюсь, как я это сделал:
Применение:
theImageView.image = theImageView.image.imageWithColor(UIColor.redColor())
Swift 4
Применение:
theImageView.image = theImageView.image?.imageWithColor(color1: UIColor.red)
источник
color1.setFill()
прямо под первую строку в методеUIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
.CGBlendMode.Normal
вместоВ раскадровке и изображении Активы. Вы также можете изменить это два:
Обновите режим рендеринга до изображения шаблона
Обновите оттенок Color в Views.
источник
imageView.tintColor
из кода.Swift 4
Измените оттенок UIImage SVG / PDF , который работает для изображения с уникальным цветом :
Измените оттенок UIImageView , который работает для изображения с уникальным цветом :
Измените оттенок UIImage для изображения , используйте это:
источник
Если кто-то заботится о решении без
UIImageView
:источник
Со Свифтом
источник
.AlwaysTemplate
.Попробуй это
http://robots.thoughtbot.com/designing-for-ios-blending-modes
или
источник
Для быстрых 3 целей
theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red
источник
Для тонирования изображения UIButton
источник
IOS
Решение для этого из Интерфейсного Разработчика , установите параметр templateImage в keyPath и выберите свой оттенок цвета из IB
}
источник
С iOS 13 и выше, вы можете просто использовать
источник
Воспользуйтесь расширением в Swift: -
источник
Swift 3 версия расширенного ответа от fuzz
источник
Теперь я использую этот метод, основанный на ответе Дункана Бэббиджа:
источник
источник
Подкласс, который также можно использовать из кода и Interface Builder:
источник
Это мое расширение UIImage, и вы можете напрямую использовать функцию changeTintColor для изображения.
Пример использования как это
И вы можете использовать
changeColor
функцию изменения, чтобы изменить цвет изображенияисточник
profileImageView.image = theImageView.image! .withRenderingMode (.alwaysTemplate)
profileImageView.tintColor = UIColor.green
ИЛИ
Сначала выберите «Особое изображение» в активе изображения, а затем выберите «Красный» вместо «По умолчанию» в качестве шаблона и после этой строки записи. profileImageView.tintColor = UIColor.green
источник
если у вас есть идентификатор для изображения SVG, вы можете заполнить цвета относительно идентификатора.
ИЛИ Проверьте этот пример.
https://github.com/ravisfortune/SVGDEMO
источник
источник