Tengo un UIImageView llamado "theImageView", con UIImage en un solo color (fondo transparente) al igual que el corazón negro izquierdo debajo. ¿Cómo puedo cambiar el color de tinte de esta imagen mediante programación en iOS 7 o superior, según el método de tinte utilizado en los iconos de la barra de navegación de iOS 7+?
¿Puede este método funcionar también en WatchKit para una aplicación Apple Watch?
UIImage
conUIImageRenderingModeAlwaysTemplate
y luego establecerUIImageVIew
eltintColor
SI funciona. (en mi código ^^)Respuestas:
iOS
Para una aplicación iOS, en Swift 3, 4 o 5:
Para Swift 2:
Mientras tanto, la solución moderna de Objective-C es:
Watchkit
En WatchKit para aplicaciones de Apple Watch, puede establecer el color de tinte para una imagen de plantilla .
Para configurar el color de tinte en Swift 3 o 4:
Swift 2:
Para configurar el color de tinte en Objective-C:
Si usa una imagen de plantilla y no aplica un color de tinte, se aplicará el Tinte global para su aplicación WatchKit. Si no ha configurado un Tinte global,
theImage
se teñirá de azul claro de forma predeterminada cuando se use como imagen de plantilla.fuente
Aquí hay una categoría que debería hacer el truco
entonces harías:
fuente
Tuve que hacer esto en Swift usando un
extension
.Pensé en compartir cómo lo hice:
Uso:
theImageView.image = theImageView.image.imageWithColor(UIColor.redColor())
Swift 4
Uso:
theImageView.image = theImageView.image?.imageWithColor(color1: UIColor.red)
fuente
color1.setFill()
derecha debajo de la primera línea del métodoUIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
.CGBlendMode.Normal
en su lugarEn storyboard e imagen Activos. puedes cambiar estos dos también:
Actualice el modo de renderizado a la imagen de plantilla
Actualice el Color de tinte en Vistas.
fuente
imageView.tintColor
código.Swift 4
Cambie el tinte de UIImage SVG / PDF , que funciona para imágenes con colores únicos :
Cambie el tinte de UIImageView , que funciona para imágenes con colores únicos :
Cambie el tinte de UIImage por imagen , use eso:
fuente
Si a alguien le importa una solución sin
UIImageView
:fuente
Con Swift
fuente
.AlwaysTemplate
.Prueba esto
http://robots.thoughtbot.com/designing-for-ios-blending-modes
o
fuente
Para fines rápidos 3
theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red
fuente
Para teñir la imagen de un UIButton
fuente
iOS
Solución para hacerlo desde Interface Builder, establezca templateImage param en keyPath y elija su color de tinte de IB
}
fuente
Con iOS 13 y superior, simplemente puede usar
fuente
Aproveche la extensión en Swift: -
fuente
Swift 3 versión de extensión de respuesta de fuzz
fuente
Ahora uso este método basado en la respuesta de Duncan Babbage:
fuente
fuente
Subclase que también se puede usar desde el generador de código e interfaz:
fuente
Esta es mi extensión UIImage y puede usar directamente la función changeTintColor para una imagen.
Ejemplo de uso como este
Y puede usar la
changeColor
función de cambio para cambiar el color de la imagenfuente
profileImageView.image = theImageView.image! .withRenderingMode (.alwaysTemplate)
profileImageView.tintColor = UIColor.green
O
Primero seleccione Imagen particular en el recurso de imagen y luego seleccione enrojecido como Plantilla en lugar de Predeterminado y después de esa línea de escritura. profileImageView.tintColor = UIColor.green
fuente
Si tiene alguna identificación para la imagen SVG, puede rellenar los colores con respecto a la identificación.
O Mira este ejemplo.
https://github.com/ravisfortune/SVGDEMO
fuente
fuente