Beim Testen meiner Anwendung in der heutigen Version von iOS 5.1 GM habe ich festgestellt, dass einige meiner Ansichten eher schwarz gezeichnet sind als ihre gemusterte Hintergrundfarbe. Derselbe Code funktioniert auf früheren iOS-Versionen (getestet auf 4.2 - 5.0.1).
Siehe Screenshots:
Hat jemand anderes das erlebt? Gibt es eine Problemumgehung?
Beantworte meine eigene Frage (ich habe ein paar Tage gebraucht, um das zu debuggen, also hoffentlich rettet das jemand anderen irgendwann;)):
Die Ursache ist die Verwendung eines gemusterten UIColor (via +[UIColor colorWithPatternImage:]
) als Hintergrundfarbe in einer UIView, die über einem UIImageView mit demselben Bild liegt.
Beispiel:
%Vor%Beide Ansichten zeichnen schwarz, und es scheint ein Caching-Problem zu geben, bei dem alle anderen Verwendungen des Bildes schwarz werden, bis die Anwendung angehalten / fortgesetzt wird.
Ich habe die Ausgabe # 10795514 bei Apple eingereicht, um dies zu melden, aber es sieht so aus, als wäre es in 5.1 gelandet. Eine Reduzierung dieses Problems finden Sie unter Ссылка
Die einzige Problemumgehung, die ich gefunden habe, war, die Ansichtshierarchie zu reduzieren und das Musterbild zweimal in derselben Ansicht zu zeichnen.
Ich hatte dieses Problem mit iOS 5.1 auf einem iPad, wo ich colorWithPatternImage in einer UIScrollView wie folgt verwendete:
%Vor%Dies funktioniert in iOS 6 (z. B. iPad2 und höher), aber auf einem Original-iPad, auf dem Sie nur Ihr iOS auf 5.1.1 aktualisieren können, wird dies weiß oder eine andere einfarbige Farbe angezeigt, die Sie irgendwo definiert haben. Die Lösung besteht darin, eine etwas weniger attraktive Methode zu verwenden, bei der Sie die backgroundView der scrollView wie folgt setzen:
%Vor%Ich habe das in iOS 6 und iOS 5.1 getestet, also sollte es auch für das iPhone gelten, wenn dort Probleme auftreten.
Tags und Links objective-c iphone ios uicolor