2009-02-07 6 views
6

in Cocoa, insbesondere die iPhone SDK, die opaque Eigenschaft wird beschrieben, wie:Cocoa/iPhone: Background und Opaque Eigenschaften

Wenn opake, der Ziehvorgang geht davon aus, dass die Ansicht seine Grenzen füllt und zeichnen effizienter. Die Ergebnisse sind unvorhersehbar, wenn undurchsichtig und die Ansicht nicht seine Grenzen füllt. Setzen Sie diese Eigenschaft auf NO, wenn die Ansicht vollständig oder teilweise transparent ist.

In meiner Erfahrung, wenn man einen Blick (Label, Tabellenzelle, etc.) hat mit backgroundColor Set [UIColor clearColor], Sie tun nichtopaque-NO setzen müssen, damit sie richtig angezeigt werden (mit einem klaren Hintergrund).

Intuitiv, dies zu tun würde auch undurchsichtig zu NO setzen, aber ich hatte nie Probleme.

Können Sie opaque = YES und clearColor mischen, oder lebe ich auf geliehene Zeit? Es scheint nirgends spezifisch dokumentiert zu sein.

Antwort

1

Versuchen Sie es und sehen ist der einzige Weg vorwärts auf dem iPhone, denn wie Sie sagen, trotz der Menge der Dokumentation, die mit dem SDK ausgeliefert wird, ist es in vielen Fällen nicht sehr spezifisch.

Wie für opak ist dies jedoch nur ein Hinweis auf die Compositing-Engine, die darauf hinweist, dass es nicht nötig ist, alle Ebenen anzuzeigen, die von der undurchsichtigen Ebene abgedeckt werden. Das Compositing erfolgt jedoch durch den Grafikchip am Telefon, so dass es in vielen Fällen nicht effizienter ist, den verdeckten Teil einer teilweise verdeckten Ebene nicht zu zeichnen, was höchstwahrscheinlich der Grund dafür ist, dass die Dinge nicht durcheinander geraten Moment (dh Kakao ignoriert die Einstellung in den Fällen, die Sie versucht haben). Aus dem gleichen Grund sehen Sie keine Leistungsverbesserung von undurchsichtig zu wahr.

Also mein Rat wäre, bei der Verwendung der undurchsichtigen Eigenschaft zu bleiben, wie die Dokumentation sagt, weil Sie ein fehlerhaftes Rendering riskieren, ohne wirklichen Nutzen.