2010-05-03 14 views
5

Ich unterordnete UIScrollView (IPhone SDK) und überschrieb die (void) layoutSubviews; Methode. Ich habe festgestellt, dass jedes Mal, wenn scrollView gescrollt wird, diese Methode aufgerufen wird.UIScrollView ruft bei jedem Scrollen layoutSubviews() auf

Ist das das richtige Verhalten oder habe ich Fehler in meinem Code? Wenn es das Standardverhalten ist, ist das nicht ein Performance-Killer?

Mit freundlichen Grüßen, heinrich

+0

Warum untergliedern Sie UIScrollView? Warum fügst du nicht einfach Subviews hinzu? –

+1

Ich könnte auch Subviews hinzufügen, aber das ist nicht der Punkt. – Erik

Antwort

10

Es ist das richtige Verhalten, und es sollte ein benutzerdefiniertes erhalten Layout Ihrer Subviews verwendet werden. Ich habe es mehrmals benutzt und hatte keine Leistungsprobleme mit Hunderten von Elementen hinzugefügt.

Ein Ausschnitt aus dem documentation zu diesem Thema:

Subklassen auch Behälter für andere Ansichten sein können. In diesem Fall überschreiben Sie einfach den angegebenen Initialisierer, initWithFrame :, um eine Sicht Hierarchie zu erstellen. Wenn Sie das Layout von Unteransichten vor dem Zeichnen programmgesteuert erzwingen möchten, senden Sie setNeedSLayout an die Ansicht. Wenn dann layoutIfNeeded aufgerufen wird, wird die layoutSubviews-Methode vor der Anzeige nur aufgerufen. Unterklassen sollten override layoutSubviews überschreiben, um eine benutzerdefinierte Anordnung von Unteransichten durchzuführen.

+0

Ich sehe, das ist das erwartete Verhalten einer ScrollView. Vielen Dank! – Erik

+0

Wenn diese Antwort hilfreich war, könnten Sie sie vielleicht als richtig markieren: P. Vielen Dank! – texmex5

Verwandte Themen