Xcode 6 Interface Builder - Farbwähler Seltsamkeit / Fehler?

8

Ich habe mir kürzlich die Haare geraubt, als ich versuchte, die gleiche Hintergrundfarbe für Ansichten festzulegen, die mit dem Interface Builder formatiert wurden, und für Ansichten, die programmatisch mit [UIColor colorWithRed: green: blue: alpha:] formatiert wurden. Trotz der Einstellung der gleichen RGB-Werte waren die in IB gestylten Ansichten etwas anders als die in Code gestylten.

Ich erkannte schließlich, dass es mit Farbräumen zu tun hatte - als ich die Ansichten in IB mit dem Farbwähler untersuchte, zeigte es, dass der Farbraum auf "sRGB" gesetzt war und nicht auf "Generic RGB". UIColor Verwendet. Ich habe die Farbraumeinstellung selbst nie geändert. Ich habe dann festgestellt, dass wenn man die RGB-Werte manuell in den Farbwähler eingibt, der Farbraum auf "sRGB" geändert wird, ohne dass man weiß, dass er eine andere Farbe hat. Wenn Sie jedoch die Schieberegler mit der Maus ziehen, um die Werte zu ändern, bleibt der Farbraum bei "Generic RGB" und alles ist gut.

Ist das ein Fehler oder missverstehe ich den Farbwähler? Ich benutze Xcode 6.1.

    
Jonathan Wareham 30.10.2014, 22:57
quelle

2 Antworten

1

Ich habe deine "Technik" nur mit Schiebereglern versucht, aber in meinem Fall ändert sich sogar das Profil wieder auf sRGB. Ich denke, es ist definitiv ein Fehler, da der einzige "Workaround", um genau die gleichen Farben in Code und Interface Builder zu erhalten, die ich gefunden habe, ist:

  1. Entscheiden Sie sich für den RGB-Code, den Sie verwenden möchten (in generischem RGB). In meinem Fall war "# 1C202C"

  2. Öffnen Sie ein neues Bild in Photoshop im Generischen RGB-Profil und füllen Sie den Hintergrund mit der Farbe

  3. Gehen Sie zum Menü Bearbeiten- & gt; In Profil konvertieren und konvertieren Sie nach "sRGB IEC61966-2.1"

  4. Öffnen Sie Photoshop Farbauswahl und wählen Sie die neue Farbe, neue rgb Code wird angezeigt ... in meinem Fall "# 252b3a"

Wenn Sie diesen Code im Interface Builder verwenden, sind die Farben von Code und IB genau gleich.

    
Matej Ukmar 09.12.2014 11:01
quelle
1

Eine Lösung ist "Device RGB" und nicht "Generic RGB".

    
Scinfu 04.06.2017 10:39
quelle