propiedades - UIImage se ve diferente cuando se usa en iOS
os11 iphone (2)
Estoy teniendo problemas con una imagen png
, que obtiene los colores incorrectos en iOS en comparación con la imagen real.
No importa cómo estoy usando la imagen, siempre obtiene los colores incorrectos. He probado UIButton
y UIImageView
y da el mismo resultado.
Es un uso muy estándar de un UIImage
:
UIImage* greenButtonImg = [UIImage imageNamed:@"btn_green"];
UIImageView* testView = [[UIImageView alloc] initWithImage:greenButtonImg];
[self.view addSubview:testView];
La segunda imagen es como se ve en iOS y el primer botón es como se ve en mi Mac (Finder y Photoshop):
Como puede ver, el segundo botón tiene un color verde diferente. Esto está sucediendo en toda la aplicación donde estoy usando esta imagen. Sucede en el simulador y en un iPhone 5.
¿Qué puede causar este problema? ¿Puede ser causado por la configuración en Photoshop, donde se creó la imagen?
Como Jeff escribió en un comentario, era un problema con los Perfiles RGB.
Logré solucionar el problema convirtiendo el perfil de color en Photoshop:
Edit -> Convert to Profile... -> Set profile to "Apple RGB"
En iOS 7.0, la imagen está coloreada con el tintColor
la barra de herramientas.
En iOS 7.0, todas las subclases de UIView
derivan su comportamiento para tintColor
de la clase base.
De forma predeterminada, se crea una imagen ( UIImage
) con UIImageRenderingModeAutomatic
.
Si tiene UIImageRenderingModeAutomatic
establecido en su imagen, se tratará como plantilla u original en función de su contexto.
Ciertos elementos de UIKit
-incluidas barras de navegación, barras de pestañas, barras de herramientas, controles segmentados- tratan automáticamente sus imágenes de primer plano como plantillas, aunque sus imágenes de fondo se tratan como originales.
Otros elementos, como vistas de imágenes y vistas web, tratan sus imágenes como originales. Si desea que su imagen siempre se trate como una plantilla independientemente del contexto, configure UIImageRenderingModeAlwaysTemplate
.
Si desea que su imagen siempre se trate como original, configure UIImageRenderingModeAlwaysOriginal
.
Recomiende imágenes de plantilla para más información.