2016-09-14 2 views
0

Ich möchte eine App erstellen, in der Benutzer scrollen können, um zu sehen Karten, dynamisch erstellt (wie Facebook App). Welche Komponente ist für diesen Zweck geeigneter?Welche Komponente sollte zum Erstellen von Karten in iOS verwendet werden?

  • Wiederverwendbare UIView innen UIScrollView? (Leistung?)
  • UIStackView innen UIScrollView? (...?)
  • UITableCellView innen UITableView? (glaube nicht, dass so)

ich es will etwas Schatten haben und eine dynamische Höhe auf dem Inhalt abhängig.

Vielen Dank.


Bild enter image description here

+2

UICollectionView ist auch eine Option –

+1

Es ist nur eine Ansicht innerhalb einer Zelle contentView mit diesem Hintergrund andere Farbe ... – Tj3n

+0

für das Anzeigen dieser als eine Liste, wie ein Newsfeed, eine Tabellenansicht oder eine Sammlungsansicht wäre wahrscheinlich besser für die Leistung und die Die tatsächlichen Zellen würden nur eine benutzerdefinierte Ansicht enthalten, in der Sie einen Rahmen mit der gleichen Farbe wie Ihr tableView-Hintergrund haben. Ich füge gerade die gleiche Funktionalität zu meiner App hinzu und das ist, wie ich es nähern werde. Ihre Zelle könnte sogar nur einen klaren Hintergrund und Einschränkungen für den tatsächlichen Inhalt haben, um sie kleiner als die Zelle zu machen. – Scriptable

Antwort

2

Wenn Sie etwas wollen, ähnlich wie bei einem Newsfeed wie auf Facebook erstellen, dann eine UITableView verwendet, ist der Weg zu gehen. Je nachdem, wie viele verschiedene Arten von Kartenlayouts Sie möchten, können Sie für jedes Kartenlayout einen anderen dynamischen Prototyp UITableViewCell erstellen. UITableViews sind dafür die natürlichste und sind auch für die Leistung großartig. Es ist im Grunde, was Sie zuerst erwähnt haben, indem Sie "wiederverwendbare UIView in UIScrollView" gesagt haben. UITableView ist ein UIScrollView, und die UITableViewCells sind im Grunde UIViews und ja, sie werden wiederverwendet. Zu jeder Zeit sind nur genügend Zellen erforderlich, um zu zeigen, was auf dem Bildschirm angezeigt wird. Wenn Sie 100 Nachrichten in Ihrem News-Feed haben, werden immer noch nur 7 Zellen vorhanden sein. Während Sie durch den News-Feed blättern, werden die 7 Zellen wiederverwendet, um verschiedene Elemente im News-Feed zu erstellen.

Für dynamische Höhen: Sie können nicht ausdrücklich angeben, dass Sie dynamische Höhen im Storyboard wünschen. Stattdessen, was Sie tun, ist für Ihre Label mit unterschiedlicher Höhe, machen Sie die Zeilen-Attribut gleich 0. Sobald das gleich 0 ist, dann müssen Sie sicherstellen, dass Sie Constraints alle ordnungsgemäß von oben nach unten in der Zelle platziert. Sie können viele Elemente haben, aber iOS benötigt die Einschränkungen, um perfekt zu sein, damit es die Höhe eindeutig bestimmen kann.

im View-Controller entspricht, schreiben Sie folgendes in Ihrer viewDidLoad Methode:

tableView.rowHeight = UITableViewAutomaticDimension

Dann empfehle ich tableView.estimatedRowHeight = 150 oder so ähnlich auch tun, damit Ihr Scrollen nicht so wackelig sein wird.

Die 100% ige Lösung zum Scrollen (besonders nach oben scrollen), um nicht wackelig zu werden, weil es normalerweise mit dynamischen Zellenhöhen geschieht, ist die Methode tableView(:heightForRowAtIndexPath) der Delegierten Methode TableView zu implementieren.

Das heißt, das ist nur ein kleiner Vorläufer, wie man das beginnt. Das Thema der dynamischen Höhen kann mit vielen Tutorials im Web gefunden werden und auch zahlreiche Fragen zu Stackoverflow über die Probleme, denen die Leute begegnen.

+0

Gut. Ich habe tatsächlich UITableCellView in UITableView versucht. Ich habe die Farbe der Trennzeichen geändert. Ich habe die Zelle angepasst (Subview mit Bild, Titel und Inhalt). Ich konnte jedoch die Eigenschaft für dynamische Höhe nicht festlegen. Code kompiliert nicht, wenn Auto-Layout verwendet wird (zwischen der Unteransicht und der Zelle) – David

+0

@David Schau dir meine bearbeitete Antwort an. – David

+0

Wow, großartig! UITableViewAutomaticDimension war der Trick! – David

Verwandte Themen