2015-05-14 10 views
14

Ich kann keinen Artikel oder ein Dokument finden, der beschreibt, welcher Farbraum für RGB-Werte verwendet werden soll, wenn eine Instanz aus der UIColor-Klasse initialisiert wird.Was ist der Standardfarbraum für UIColor?

Der Artikel Getting the right colors in your ios app sagt, wir sollten Generic RGB verwenden. Auf der anderen Seite habe ich mehrere Posts gefunden, die sagen, dass wir sRGB auf iOS verwenden sollten.

es den Raum Standardfarbe scheint, ist sRGB wie hier geschrieben in CGColorSpace Reference

Es gibt a new color space namens „Display P3“, der in der iPad Pro und iPhone 7. Das Profil in den vorhandenen Bildressourcen umgewandelt werden muss die Anzeige P3. Für die Digital Color Meter App muss das P3-Profil ausgewählt werden, um "Display P3" RGB-Werte zu erhalten. Siehe den Screenshot.

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

+0

Also können wir nicht einfach die Farbe von Sketch Farbwähler nehmen, durch 255 teilen und zu 'UIColor (rot :, grün :, blau :, alpha:)', bin ich richtig? Die einzige Lösung, die ich sehe, ist die Verwendung von Digital Color Picker mit "Display in sRGB" –

+1

Farben werden nicht nur mit RGB-Werten definiert; Sie müssen den Farbraum angeben, in dem die RGB-Werte definiert wurden. – Yohst

Antwort

3

TL; DR

iOS verwendet erweiterte sRGB wie es Standard ist.

Detaillierte Erläuterung

Dies kann leicht über den Debugger in Xcode überprüft werden:

  • einen Haltepunkt setzen überall in Ihrem Code,
  • wenn LLDB aufkommt, Typ po UIColor.red,
  • die Der obige Befehl gibt UIExtendedSRGBColorSpace 1 0 0 1 ab iOS 11, Xcode 9.2 zurück.

können Dieser Farbraum die gleichen sRGB-Werte ohne Farbwechsel verwenden, aber zur gleichen Zeit ermöglicht RGB-Werte sowohl negative als auch größer als 1,0 gehen Farben außerhalb des sRGB-Farbraum (dh die erweiterte sRGB-Farb auszudrücken Platz)

Es gibt ein nettes WWDC Video, Working with Wide Color, von 2016, das dieses Phänomen schön erklärt (gehen Sie zu 8:35).

Wenn Sie also sRGB-Farben in Ihrer App verwenden, sollten Sie auch für e-sRGB-Displays gut sein. Wenn Sie eine dieser spezifischen Farben außerhalb des sRGB-Farbraums benötigen, müssen Sie natürlich den e-sRGB-Farbraum verwenden.

5

Ich schrieb einen Blog-Post, die dies im Detail erklärt:

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

Im Wesentlichen während Skizze eine benutzerdefinierte Farbauswahl verwendet, die sRGB-Farbkomponenten Farbe Pick nicht der Fall ist, Xcode annimmt.

UIColor's gängigste Factory Methode + colorWithRed: grün: blau: alpha: nimmt den sRGB Farbraum an (Extended sRGB wenn mit iOS 10.x verlinkt), hat aber auch eine andere Factory Methode, colorWithDisplayP3Red: grün: blau: alpha : welche die RGBA-Komponenten des Anzeige-P3-Farbraums aufnimmt, aber intern als übersetzte Werte mit Bezug auf den sRGB-Farbraum speichert.

Wie immer, werfen Sie einen Blick auf Apples Dokumentation auf UIColor für weitere Informationen:

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

Interessanterweise AppKit des UIColor Pendant NSColor unterstützt Weise mehr Flexibilität mit mehr verfügbaren Fabrikmethoden (einschließlich eines entworfen mit einem benutzerdefinierten Farbraum speziell zur Nachahmung von UIColor + colorWithRed: grün: blau: alpha: Verhalten). Ich bin mir nicht sicher, warum UIColor begrenzter ist.

+0

Erstaunliche Dokumentation und Blogpost, danke! –

+0

Ich bin froh, dass ich helfen konnte! – vsanthanam510