CGImage-Maske funktioniert nicht in Wide-Color-Gamut-Anzeigen

8

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: Ссылка

    
pwightman 18.10.2017, 19:32
quelle

1 Antwort

2

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

%Vor%

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.

    
paiv 01.11.2017 17:30
quelle

Tags und Links