Ich bin gestern in eine Situation geraten, wo ich eine UIColor aufhellen musste, also habe ich eine Kategorie erstellt und eine lighten
-Methode hinzugefügt. Ich dachte, es wäre einfach, den Wert für jede Komponente der Farbe zu multiplizieren, aber meine Grüns begannen gelb zu werden, so dass ich wusste, dass es komplizierter sein musste.
Die Lösung, die ich mir ausgedacht habe, bestand darin, von sRGB in Linear zu konvertieren, die Farbe zu multiplizieren und dann zurück zu konvertieren. Das scheint zu funktionieren, aber ich bin mir nicht sicher, ob es "korrekt" ist. Ich konnte nichts in den Dokumenten finden, die angaben, dass UIColor im sRGB-Raum war. Ich bin auch kein Farbwissenschaftler, also habe ich nur ein rudimentäres Wissen über die Mathematik.
Wie auch immer, hier ist mein Code, ich frage nach einem Peer-Review und um zu sehen, ob irgendjemand ein besseres Verständnis davon hat, UIColors zu modifizieren.
%Vor%Dies ist meine iOS5 + -Lösung, mit der sich relative Helligkeitsänderungen leicht ändern lassen (Aufhellen und Abdunkeln des All-in-One):
%Vor%Es wird wie folgt aufgerufen:
%Vor%Mit 1.1 erhöht sich die Helligkeit um 10%; 0,9 verringert die Helligkeit um 10%. Beachten Sie, dass die 10% relativ zu reinem Weiß sind (dh 10% ist immer eine .1 Helligkeitszunahme). Dies ist das erwartete Verhalten, wenn Sie eine prozentuale Zunahme wünschen, um die Farben unabhängig von ihrer ursprünglichen Helligkeit gleichmäßig zu erhellen oder zu verdunkeln / p>
== 1.0 ist die mitgelieferte Farbe, & gt; 1.0 ist heller und & lt; 1.0 ist dunkler.
Tags und Links objective-c cocoa-touch uicolor