2009-05-05 4 views
0

Ich habe ein UIScrollView mit einem Raster von Bildern. Momentan sind es nur 6, aber es könnten ein paar Hundert sein. Daher wäre es natürlich eine schlechte Idee, ein paar hundert UIImageView-Objekte in diesem UIScrollView zu erstellen und sie mit Bilddaten zu füllen. Ich glaube, ich habe das irgendwo in der Apple-Dokumentation gelesen: Sie empfehlen, nur so viel Elemends zu erstellen, wie Sie den scrollbaren sichtbaren Bereich füllen müssen.UIScrollView: Wie würde ich Objekte in meinem scrollbaren Raster wiederverwenden, wenn der Benutzer scrollt?

Aber ich befürchte Leistungsprobleme, wenn ich sofort UIImageView Elemente neu positionieren würde. Ich denke. Wenn der Benutzer nach unten scrollt (nehmen wir an, dass er bei 0,0 beginnt), müsste ich die UIView-Objekte neu positionieren, die oben aus dem sichtbaren Bereich herausgehen, sie schnell nach unten positionieren und dann sehr zuweisen (!!) schnell ein neues Bildobjekt zu diesem UIImageViews in der Zeile. Ich meine ... Was ist, wenn der Benutzer beginnt, wie eine wilde Gazelle zu scrollen, schneller und schneller?

Wie ist Ihr Ansatz dafür?

Antwort

1

In einer ähnlichen, wenn auch kleineren Situation, habe ich mich damit beschäftigt, mehr als ich für die Scroll-Ansicht Dimensionen, aber nicht den gesamten Datensatz benötigt. Ich scrollte nur horizontal und fand heraus, dass das Laden von 1 oder 2 Bildern auf jeder Seite des aktuell sichtbaren Bildes die Dinge schön und glatt hielt. Das lädt noch 3 oder 5 Bilder, wenn nur 1 sichtbar ist, aber es ist verdammt viel besser, als Dutzende von ihnen zu laden. Sie müssen ein wenig experimentieren, um zu sehen, wie viel Abfall Sie im sichtbaren Bereich zulassen müssen.

Das dynamische Laden/Entladen von Bildern wird am besten in den Delegate-Methoden der Bildlaufansicht behandelt.

1

UIScrollView (oder eigentlich UIKit) ist sehr gut darin, Dinge, die sich nicht ändern, nicht neu zu zeichnen. Wenn Sie nur Ansichten außerhalb des Bildschirms (oder ausgeschnittene Ansichten) verschieben (oder entfernen), wird kein Neuaufbau durchgeführt. Dito mit dem Hinzufügen von Unteransichten außerhalb des Bildschirms.

Wenn Sie kein Paging aktiviert haben, müssen Sie wahrscheinlich einen schnelleren Zeichnungscode implementieren, den UIView bietet. Allerdings würde ich zuerst testen - die physischen Grenzen des iPhone begrenzen das Scrollen teilweise.