ios - green - ¿Cuál es el espacio de color predeterminado para UIColor?
uicolor to hex (2)
No puedo encontrar un artículo o un documento que describa qué espacio de color se debe usar para los valores RGB al inicializar una instancia de la clase UIColor.
El artículo Cómo obtener los colores correctos en su aplicación ios dice que deberíamos usar RGB genérico. Por otro lado, he encontrado varias publicaciones que dicen que definitivamente deberíamos usar sRGB en iOS.
Parece que el espacio de color predeterminado es sRGB como está escrito aquí en Referencia de CGColorSpace
Hay un nuevo espacio de color llamado "Pantalla P3" utilizado en el iPad Pro y el iPhone 7. El perfil de los recursos de imagen existentes debe convertirse a la Pantalla P3. Para la aplicación Digital Color Meter, el perfil P3 debe seleccionarse para obtener los valores RGB "Mostrar P3". Vea la captura de pantalla.
TL; DR
iOS usa sRGB extendido como su predeterminado.
Explicación detallada
Esto se puede verificar fácilmente a través del depurador en Xcode:
- poner un punto de interrupción en cualquier lugar en su código,
- cuando aparezca lldb, escriba
po UIColor.red
, - el comando anterior devolverá
UIExtendedSRGBColorSpace 1 0 0 1
partir de iOS 11, Xcode 9.2.
Este espacio de color puede usar los mismos valores de sRGB sin un cambio de color, pero al mismo tiempo permite que los valores de RGB se vuelvan negativos, así como mayores de 1.0 para expresar los colores fuera del espacio de color de sRGB (es decir, el espacio de color sRGB extendido).
Hay un buen video de la WWDC, Working with Wide Color , de 2016 que explica muy bien este fenómeno (ve a 8:35).
Por lo tanto, si utiliza colores sRGB en su aplicación, debería ser bueno incluso para pantallas e-sRGB. Por supuesto, si necesita uno de esos colores específicos fuera de la gama sRGB, necesitará usar el espacio de color e-sRGB.
Escribí una publicación de blog que explica esto en detalle:
Esencialmente, mientras que Sketch utiliza un selector de color personalizado que asume componentes de color sRGB, la selección de color de Xcode no lo hace.
El método de fábrica más común de UIColor + colorWithRed: verde: azul: alfa: asume el espacio de color sRGB (sRGB extendido si está vinculado con iOS 10.x), pero también tiene otro método de fábrica, colorWithDisplayP3Red: verde: azul: alfa: que tomará en los componentes RGBA del espacio de color de la Pantalla P3, pero los almacena internamente como valores traducidos con una referencia al espacio de color sRGB.
Como siempre, eche un vistazo a la documentación de Apple en UIColor para obtener más información:
https://developer.apple.com/documentation/uikit/uicolor?changes=latest_minor
De manera interesante, la contraparte UIColor de AppKit, NSColor, es mucho más flexible con más métodos de fábrica disponibles (incluido uno diseñado con un espacio de color personalizado específicamente para imitar el + colorWithRed de UIColor: verde: azul: alfa: comportamiento). No estoy seguro de por qué UIColor es más limitado.