16 Stimmen

UIView clipsToBounds Eigenschaft: Verbessert es die Leistung?

Die Dokumentation besagt, dass die clipsToBounds Eigenschaft von UIView das Zeichnen auf die Grenzen beschränkt, oder genauer gesagt, dass die subView außerhalb der Grenzen des superView nicht zeichnen kann.

Klingt gut, aber was bedeutet das in der Praxis?

Wenn ich das auf JA setze, wird meine subView automatisch nur die Teile zeichnen, die nicht außerhalb der Grenzen des superView liegen. Steigert das insgesamt die Leistung oder muss ich immer noch sicherstellen, dass ich keine Views erstelle, die nicht sichtbar sind, z.B. innerhalb eines UIScrollView?

25voto

Daniel Dickison Punkte 21643

Ich denke, es ist das Gegenteil: Das Einschalten der Clipping-Funktion beeinträchtigt die Leistung, weil es eine Clipping-Maske einrichten muss. Ich erinnere mich vage daran, das irgendwo gelesen zu haben, aber ich kann es jetzt nicht finden.

1voto

Kwok Pan Fung Punkte 396

Der Anwendungsfall für clipsToBounds betrifft eher Unterviews, die teilweise außerhalb des Hauptviews liegen. Zum Beispiel habe ich ein (kreisförmiges) Subview am Rand seines Eltern-(rechteckigen) UIViews. Wenn Sie clipsToBounds auf YES setzen, wird nur die Hälfte des Kreises/Subviews angezeigt. Wenn es auf NEIN gesetzt wird, wird der gesamte Kreis angezeigt. Bin gerade darauf gestoßen und wollte es teilen.

0voto

der_michael Punkte 2883

Der (mögliche) Leistungsverlust ist nur deterministisch, wenn Sie die Ansichtshierarchie kennen. Wie oben erwähnt, wird der Renderer in der Regel GPU-Zyklen verwenden, um die Ansicht zu zeichnen, ES SEI DENN, eine Ansicht innerhalb der Hierarchie verwendet drawRect:. Dies betrifft keine OpenGL ES-Anwendung, weil drawRect: in diesem Typ von Apps ausgelassen wird.

Nach meinem Verständnis kann es weniger Zyklen dauern, den abgeschnittenen Bereich zu bestimmen und anzuzeigen, als tatsächlich die gesamte Ansicht zu berechnen/zeichnen/mischen. Gemäß OpenGL ES 2.0 kann das Clipping in der GPU berechnet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X