2017-02-15 2 views
-1

Wenn ich versuche, Zelle intrinsicContentSize in Funktion collectionView(_:didSelectItemAt:) zu erhalten, ist das Ergebnis (-1, -1).Swift3 - UICollectionViewCel's intrinsicContentSize ist (-1, -1)

Ich verwende Flow-Layout mit Auto-Layout-Konfiguration der Zelle Subviews und implementiert nicht collectionView(_:layout:sizeForItemAt:). Hat jemand Ideen?

Edit:

die automatische Layout-Zelle hat die Breite und Höhe festgelegt. Ich drehte mich auf Selbst Dimensionierung von estimatedItemSize Einstellung und die Collection Config wie folgt:

self.collectionView.delegate = self 
self.collectionView.dataSource = self 
if let layout = self.collectionView.collectionViewLayout as? 
    UICollectionViewFlowLayout { 
     layout.estimatedItemSize = CGSize(width: 100, height: 100) 
} 

Und ich versuche die Zelle intrinsicContentSize in zu erhalten:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let cell = collectionView.cellForItem(at: indexPath) 
    let size = cell?.intrinsicContentSize 
} 

die mich (-1, -1) für size

+0

mehr Code setzen Sie implementiert haben Antwort –

+0

Check out http://stackoverflow.com/questions/24127032/proper-usage-of-intrinsiccontentsize-and-sizethatfits-on-uiview-subclass-with-a –

Antwort

0
gibt

Eine UICollectionViewCell hat keine intrinsicContentSize. Warum erwartest du, dass es eins hat?

  • Wenn Sie wissen wollen, welche Größe die Zelle in diesem Moment ist, fragen Sie einfach für seine bounds.size.

  • Wenn Sie wissen möchten, welche Größe die Zelle annehmen würde, wenn sie von innen durch die Einschränkungen der automatischen Layouts ihrer Unteransichten skaliert würde, rufen Sie systemLayoutSizeFitting(_:).

+0

Ja, das habe ich danach bemerkt. Eigentlich würde ich gerne eine erweiterbare und zusammenklappbare Zelle implementieren, die Etiketten beim Tippen enthält, und nur gedacht "intrinsicContentSize" kann die Größe enthüllen, die für alle Labels mit vollem Inhalt passt. –

+0

Klingt mir wie du willst ist 'systemLayoutSizeFitting (_ :) '. Das zu meiner Antwort hinzugefügt. – matt

+0

Nur erkennen, dass Sie der Autor des Buches "iOS 10 Programmierung" sind und ich studiere auf es ~ So schön, Sie zu treffen LOL @matt –