anzupassen. Ich möchte die dynamische UITableViewCell
Höhe neu in iOS 8 nutzen. Ich muss eine UICollectionView
innerhalb einer UITableViewCell
platzieren. Ich möchte sicherstellen, dass alle Zellen in der Sammlungsansicht auf dem Bildschirm sichtbar sind. Daher sollte die Größe der Tabellenzelle erhöht werden, damit sie in die Sammlungsansicht passt. Ich habe fast das funktioniert. Ich war einfach nicht in der Lage, die Tabellenzelle auf die richtige Größe zu bringen - sie ist entweder zu lang oder zu kurz in der Höhe, und einige Layoutprobleme sind sichtbar, bis ich mit der Tabelle interagiere (mehr dazu unten).Aktualisiere Sammlungsansichtshöhe, um alle Zellen in einer Tabellenansichtszelle unter Verwendung des automatischen Layouts
Ich habe automatische Layouteinschränkungen für die Sammlungsansicht auf contentView
der Tabellenzelle eingerichtet: vor, nach, oben und unten. Ich habe dann eine Höhenbeschränkung für die Sammlungsansicht erstellt, so dass ich die constant
im laufenden Betrieb aktualisieren kann, nachdem ich die passende Höhe für alle Zellen in der Sammlungsansicht berechnet habe (weil ich glaube, dass es keine Möglichkeit gibt, dies automatisch zu tun).
Hier ist der Rest des Setups.
viewDidLoad {
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 44
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let cellDimension = self.collectionView.frame.size.width/7 //always 7 columns
let flowLayout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
flowLayout.itemSize = CGSizeMake(cellDimension, cellDimension)
self.collectionViewHeightConstraint.constant = cellDimension * 4 //always 4 rows
}
Ich habe heightForRowAtIndexPath
nicht implementiert.
Diese Konfiguration führt zu widersprüchlichen vertikalen Einschränkungen. Ich habe versucht, die Priorität der Beschränkungen zu reduzieren und die Beziehung in einer Reihe von Kombinationen zu ändern, aber keine führte zu dem gewünschten Verhalten. Wenn ich die Priorität der Höhenbeschränkung auf 999 reduziere, ist die Tabellenansichtszelle zunächst zu groß, aber nachdem ich in der Tabellenansicht nach oben und unten geblättert bin, wird die Höhe der Tabellenzelle auf die erwartete Höhe aktualisiert. Bei einigen anderen Kombinationen ist das Ergebnis entweder, dass die Tabellenzelle zu kurz ist, aber die vollständige Sammlungsansicht ausgeblendet wird, die Tabellenzelle zu kurz ist und die Sammlungsansicht abgeschnitten ist oder die Tabellenzelle basierend auf der Priorität und zu groß ist Beziehungen, die ich auf die Einschränkungen angewendet habe. Darüber hinaus werden die Auflistungsansichtszellen nicht in der richtigen Größe angezeigt, während die Ansicht animiert wird (aber bis zum Ende der Animation). Wenn ich die Tabelle neu lade, haben die Zellen der Auflistungsansicht die falsche Größe, bis ich blättern kann Der Tisch.
Wie kann ich diese Darstellungsprobleme beheben, um eine dynamische Tabellenansichtszellenhöhe zu erhalten, die eine vollständig sichtbare Sammlungsansicht mit dynamischer Zellengröße basierend auf der Anzeigebreite enthält?
Ich würde vorschlagen, die rowHeight-Einstellung "self.tableView.rowHeight =" von ViewDidLoad zu ViewWillAppear zu verschieben, Sie können diese Frage auch überprüfen. [link] (http://stackoverflow.com/questions/29263875/uitableviewcells-initial-load-view-display-issue) –
@KevinHorgan Das machte keinen merklichen Unterschied. – Joey
Damit das automatische Layout in UITableViewCell ordnungsgemäß funktioniert, müssen Sie Einschränkungen für alle Layouts in containerView hinzufügen, ohne zu fehlen. Andernfalls funktionieren die automatischen Layouts nicht ordnungsgemäß. Überprüfen Sie den folgenden Link, der detaillierte Informationen zur automatischen Layouteinstellung für tableviewcell http: // stackoverflow enthält .com/questions/29231390/uitableview-merkwürdig-layout-verhaltens-änderungen-auf-scroll/29327082 # 29327082 – Ram