2015-05-14 15 views
14

Non riesco a trovare un articolo o un documento che descriva quale spazio colore deve essere utilizzato per i valori RGB quando si inizializza un'istanza dalla classe UIColor.Qual è lo spazio colore predefinito per UIColor?

L'articolo Getting the right colors in your ios app dice che dovremmo usare RGB generico. D'altra parte, ho trovato diversi post che dicono che dovremmo sicuramente usare sRGB su iOS.

Sembra lo spazio colore di default è sRGB come scritto qui nel CGColorSpace Reference

C'è a new color space chiamato "Display P3" utilizzato nel iPad e iPhone Pro 7. Il profilo delle risorse immagine esistenti deve essere convertito a il display P3. Per l'app Digital Color Meter è necessario selezionare il profilo P3 per ottenere i valori RGB "Display P3". Guarda lo screenshot.

How to pick the right RGB values for the Display P3 color space. enter image description here

+0

Quindi non possiamo semplicemente prendere il colore dal selettore di colori Sketch, dividerlo per 255 e passare a 'UIColor (rosso :, verde :, blu :, alfa:)', ho ragione? L'unica soluzione che vedo è usare Digital Color Picker con "Display in sRGB" –

+1

I colori non sono definiti usando solo valori RGB; dovrai specificare lo spazio colore in cui sono stati definiti i valori RGB. – Yohst

risposta

3

TL; DR

iOS di ampliamento sRGB come è di default.

Spiegazione dettagliata

questo può facilmente essere verificata tramite il debugger in Xcode:

  • mettere un punto di interruzione qualsiasi punto del codice,
  • quando lldb viene in su, tipo po UIColor.red,
  • la il comando precedente restituirà UIExtendedSRGBColorSpace 1 0 0 1 a partire da iOS 11, Xcode 9.2.

Questo spazio colore può utilizzare gli stessi valori sRGB senza un cambiamento di colore, ma allo stesso tempo permette valori RGB andare negativa sia maggiore di 1,0 esprimere colori al di fuori dello spazio colore sRGB (cioè il colore sRGB esteso spazio)

C'è un bel video WWDC, Working with Wide Color, dal 2016 che spiega bene questo fenomeno (vai alle 8:35).

Quindi, se si utilizzano i colori sRGB nell'app, si dovrebbe essere adatti anche per i display e-sRGB. Naturalmente, se è necessario uno di quei colori specifici al di fuori della gamma sRGB, sarà necessario utilizzare lo spazio colore e-sRGB.

5

ho scritto un post sul blog che spiega in dettaglio:

http://www.vsanthanam.com/writing/2017/7/6/colors-in-ios-ensuring-consistency-between-designs-interface-builder-and-uicolor

In sostanza, mentre Sketch utilizza un selettore di colori personalizzato che assume componenti di colore sRGB, scegliere il colore di Xcode non lo fa.

Il metodo di fabbrica più comune di UIC + colorWithRed: verde: blu: alfa: presuppone lo spazio colore sRGB (sRGB esteso se collegato con iOS 10.x), ma ha anche un altro metodo di fabbrica, colorWithDisplayP3Red: verde: blu: alfa : che includerà i componenti RGBA dello spazio colore di Display P3, ma li memorizza internamente come valori tradotti con un riferimento allo spazio colore sRGB.

Come sempre, dare un'occhiata alla documentazione di Apple su UIColor per maggiori informazioni:

https://developer.apple.com/documentation/uikit/uicolor?changes=latest_minor

Abbastanza interessante, UIColor controparte di AppKit, NSColor, supporta modo una maggiore flessibilità con metodi di fabbrica più disponibili (tra cui uno progettato con uno spazio colore personalizzato appositamente per imitare UIColor + colorWithRed: verde: blu: alpha: comportamento). Non sono sicuro del motivo per cui UIColor è più limitato.

+0

Documentazione stupefacente e post sul blog, grazie! –

+0

Contento di aver potuto aiutare! – vsanthanam510

Problemi correlati