iphone - human - iOS: el color en el simulador xcode es diferente del color en el dispositivo
ios human interface guidelines app icon (9)
Como otros han señalado, este es un problema de Color Spaces .
Se deben realizar dos tareas:
- Obtenga el color de fuente usando el espacio de color sRGB.
- Establezca el color en Interface Builder, utilizando el espacio de color sRGB.
Tarea 1
Puede usar la aplicación de Digital Color Meter
de Apple para muestrear el color requerido, usando la opción Display in sRGB
, pero la salida es muy limitada.
Otra opción es usar una aplicación como SipIt
(disponible gratuitamente en la App Store, la última vez que lo revisé). Asegúrese de estar muestreando en el espacio de color correcto realizando:
Preferences -> General -> Color Profiles -> sRGB
También puede configurar su formato de salida (por ejemplo, cadena hexadecimal).
En Interface Builder, abra la ventana Color, elija el segundo panel, elija "RGB Sliders". A continuación, haga clic en el icono del engranaje para elegir el perfil de color sRGB.
Una vez hecho esto, pegue su valor de color en el campo Hex Color #
¡Terminaste! Tus colores ahora deberían coincidir.
No estoy afiliado a SipIt de ninguna manera. Pero lo he estado usando durante algunos años y es muy útil. Lo recomendaría a cualquier diseñador.
Visión de conjunto
El color de fondo de mi aplicación de iPhone en el simulador (iMac) se ve diferente del color en el dispositivo (iPhone 3GS).
EDITAR (se ha agregado la siguiente sección)
Los siguientes son todos diferentes:
- color del tablero de historias (archivo xib)
- color del simulador
- color del dispositivo
Supongo que debería ver cómo se ve en el dispositivo.
Preguntas
- ¿Este es un problema común al que se enfrentan otros desarrolladores y hay una forma de hacer coincidir los colores (procedimiento sistemático)?
- ¿el color se verá diferente en las diferentes versiones de iPhone (3gs / 4 / 4s) o en todo el color?
- ¿Me estoy perdiendo algo? ¿Hay algún perfil de color específico que deba usar?
- ¿Hay algo así como una regla general donde los valores RGB varían en un cierto porcentaje?
- En iPhone 4 y 4S, ¿el color coincide con el simulador? (No tengo un iPhone4 y 4S, así que no estoy seguro).
El crédito va a @jtbandes por sugerir enviar capturas de pantalla que llevaron a la solución
Solo estoy respondiendo la pregunta para completarla.
Pasos que seguí:
- Tome una captura de pantalla de la imagen en el guión gráfico
- Haga una captura de pantalla de la imagen en el dispositivo (use la secuencia de correo / foto en su Mac)
- Utilice el selector de color (parte de la paleta de colores de mac OS) para elegir el mismo lugar en ambas capturas de pantalla
- Anote los valores RGB (disponibles en la paleta de colores de mac OS) de los spots elegidos en el paso 3
- comparar los valores RGB y ver la diferencia
- agregue el desplazamiento RGB para que coincida con el color.
Mi desplazamiento RGB (no se debe seguir a ciegas)
De acuerdo con mi experiencia, agregué los siguientes valores RGB para obtener el color que quería, solo es duro y funcionó para mí:
- Rojo +12
- Verde +19
- Azul +16
Diferentes ángulos (lo mejor es mantenerlo horizontal)
Sostener el teléfono en diferentes ángulos también da diferentes tonos, mantenerlo horizontal dio el color
La mejor manera de convertir los valores RGB a sRGB es utilizando la herramienta "Medidor digital de color" en mac, simplemente verifique la "Pantalla en sRGB"
luego use los valores sRGB en su código en lugar de RGB
Con esta herramienta puede encontrar el color RGB genérico y configurarlo directamente en xcode como valores RGB
La referencia actual (a partir del 17/3/14) CGColorSpace incluye el siguiente texto, que dice que sRGB es el espacio de color del dispositivo nativo para iOS.
Color Spaces e iOS: iOS no es compatible con ColorSync, por lo que todos los activos se deben proporcionar en el espacio de color del dispositivo nativo: sRGB.
Puede usar esta webPage para diferentes mazos de colores en Xcode. por ejemplo, los colores genéricos y de dispositivo son diferentes un poco.
Se trata de espacios de color .
Asegúrese de seleccionar el color de un sRGB
color sRGB
y de replicar sus valores RGBA en el Generador de interfaces seleccionando sRGB IEC61966-2.1
en el menú desplegable.
Si selecciona un color en un espacio de color y lo genera en un espacio de color diferente, se verá diferente, a pesar de haber replicado los mismos valores de RGBA.
Además, tenga en cuenta que cuando genera un código de color mediante UIColor(red:green:blue:alpha:)
, se genera en el sRGB
color sRGB
de forma predeterminada. Por eso es tan conveniente usar este (en lugar de Adobe RGB
, P3
o cualquier otro). Además, sRGB
es el estándar más utilizado actualmente en la industria.
Dato UIColor
constructor de UIColor
que mencioné anteriormente crea colores en el espacio sRGB
desde Xcode8. Antes, esa función solía crearlos dentro del espacio Generic RGB
. Es por eso que podría causar confusiones también.
Aquí hay un recurso que se extiende sobre el tema: https://medium.com/@volbap/working-efficiently-with-colors-in-xcode-bc4c58b16f9a
Tuve un problema similar, especialmente con los greens en mi proyecto. Mi problema resultó ser que algunos de los recursos que tenía se crearon en Illustrator, y el color se configuró en CMYK en lugar de RGB. No estoy seguro si este fue su problema o no, pero podría ser útil para aquellos que se topan con esta pregunta en el futuro. Cambié el ilustrador "Modo de color del documento" a RGB y todo está bien.
Una solución más simple cuando trabajas con archivos de imagen en tu aplicación. En primer lugar, configure su espacio de color en Xcode en sRGB IEC61966-2.1 y aplique sus colores. Luego, antes de importar cualquier imagen a su aplicación, haga coincidir sus imágenes con el perfil sRGB IEC61966-2.1 utilizando la utilidad ColorSync en Mac. Funcionó perfectamente para mí y mi fondo ahora coincide perfectamente con mis imágenes importadas. Espero que esto ayude a alguien.
iPhone utiliza la administración del espacio de color, por lo que si desea una solución más "científica" puede crear su propio espacio de color, por ejemplo, con CGColorSpaceCreateCalibratedRGB
. Sin embargo, está en el nivel de gráficos Core.