Ich habe eine UIView-Unterklasse, die ein Bild mit einer angewendeten Maske rendert. Es funktioniert perfekt auf allen Geräten (nur auf dem iPad), außer bei denen mit einem Wide Color Gamut-Display (den neuesten iPad Pros), bei denen die Maske vollständig transparent ist (es sieht für den Benutzer so aus, als wäre die Ansicht nicht vorhanden). Der entsprechende init / drawRect-Code sieht folgendermaßen aus:
%Vor% (Für Kontext ist der Grund, dass pixels
, alphaPixels
usw. notwendig sind, auf anderen Code in der Klasse zurückzuführen, der in den Kontext zieht, um die Maske zu beeinflussen).
Irgendeine Idee, warum die Anzeige des breiten Farbumfangs dies beeinflussen würde, oder was könnte getan werden, um es zu reparieren? Ich dachte, dass es etwas mit dem Farbraum zu tun haben könnte, aber die Dokumente geben eindeutig an, dass Masken CGColorSpaceCreateDeviceGray
verwenden müssen, damit es richtig funktioniert (was in der Tat stimmt).
Hier ist ein Beispielprojekt, das das Problem veranschaulicht: Ссылка
Nach Diskussion aktualisiert:
Das Problem scheint in der Handhabung von CFData zu liegen.
%Vor% Der Parameter capacity
ist "Die maximale Anzahl von Bytes, die das CFData-Objekt enthalten kann." Wir müssen die length-Eigenschaft weiterhin behandeln, indem wir entweder Bytes anhängen oder
Ursprüngliche Antwort:
Verwenden Sie keine benannten Farben wie UIColor.black
. Verfassen Sie stattdessen Farben von Komponenten. Gemischte Farbräume werden möglicherweise von Core Graphics nicht richtig behandelt.
Tags und Links ios ipad core-graphics