Starten Sie UICollectionView unten

8

Wie startet man in iOS 7 bei einer UICollectionView ganz unten? Denken Sie an die iOS-Nachrichten-App, bei der die Ansicht immer am unteren Rand (letzte Nachricht) angezeigt wird.

    
Nick Stamas 15.02.2014, 16:32
quelle

6 Antworten

3

Das Problem besteht darin, dass wenn Sie versuchen, das contentOffset Ihrer Auflistungsansicht in viewWillAppear festzulegen, die Auflistungsansicht ihre Elemente noch nicht gerendert hat. Daher ist self.collectionView.contentSize immer noch {0,0}. Die Lösung besteht darin, das Layout der Sammlungsansicht nach der Inhaltsgröße zu fragen.

Außerdem sollten Sie sicherstellen, dass Sie den contentOffset nur dann setzen, wenn die contentSize größer als die Grenzen Ihrer Sammlungsansicht ist.

Eine vollständige Lösung sieht folgendermaßen aus:

%Vor%     
awolf 10.07.2014, 22:02
quelle
3

@awolf Deine Lösung ist gut! Aber funktionieren nicht gut mit Auto-Layout.

Sie sollten zuerst [self.view layoutIfNeeded] aufrufen. Vollständige Lösung ist:

%Vor%     
codingiran 02.04.2016 05:52
quelle
1
%Vor%

Aber denken Sie daran, dies nur zu tun, wenn Ihr contentSize.height & gt; bounds.size.height .

    
n00bProgrammer 15.02.2014 17:24
quelle
1

Das funktioniert für mich und ich denke, es ist ein moderner Weg.

%Vor%     
duan 04.11.2015 09:09
quelle
0

Wenn Sie wissen, wie viele Elemente sich in Ihrer Sammlungsansicht befinden, können Sie

verwenden

scrollToItemAtIndexPath:atScrollPosition:animated:

Apple Docs

    
Flexicoder 15.02.2014 16:53
quelle
0

es funktioniert perfekt für mich (automatisches Layout)

  1. Berechnen Sie die Inhaltsgröße von ScrollView mit collectionViewFlowLayout und cellSize
  2. collectionView.contentSize = berechneteContentSize
  3. collectionView.scrollToItemAtIndexPath (whichYouWantToScrollIndexPath, atScrollPosition: ...)
hothead 23.11.2016 03:39
quelle