在iOS 7中,給定一個UICollectionView,你如何在底部啓動它?想想iOS消息應用程序,當視圖變得可見時,它總是從底部開始(最近的消息)。在底部啓動UICollectionView
8
A
回答
2
問題是,如果您嘗試在viewWillAppear中設置集合視圖的contentOffset,則集合視圖尚未呈現其項目。因此self.collectionView.contentSize仍然是{0,0}。解決方法是詢問收集視圖的佈局的內容大小。
此外,當contentSize高於集合視圖的邊界時,您需要確保只設置contentOffset。
完整的解決方案是這樣的:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
CGSize contentSize = [self.collectionView.collectionViewLayout collectionViewContentSize];
if (contentSize.height > self.collectionView.bounds.size.height) {
CGPoint targetContentOffset = CGPointMake(0.0f, contentSize.height - self.collectionView.bounds.size.height);
[self.collectionView setContentOffset:targetContentOffset];
}
}
0
1
yourCollectionView.contentOffset = CGPointMake(0, yourCollectionView.contentSize.height - yourCollectionView.bounds.size.height);
但要記住做只有這個時候你contentSize.height
>bounds.size.height
。
1
這對我的作品,我認爲這是一個現代的方式。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.collectionView!.scrollToItemAtIndexPath(indexForTheLast, atScrollPosition: UICollectionViewScrollPosition.Bottom, animated: false)
}
2
@awolf 您的解決方案很好! 但自動佈局不能很好地工作。
您應該首先調用[self.view layoutIfNeeded]! 完整的解決方案是:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// ---- autolayout ----
[self.view layoutIfNeeded];
CGSize contentSize = [self.collectionView.collectionViewLayout collectionViewContentSize];
if (contentSize.height > self.collectionView.bounds.size.height) {
CGPoint targetContentOffset = CGPointMake(0.0f, contentSize.height - self.collectionView.bounds.size.height);
[self.collectionView setContentOffset:targetContentOffset];
}
}
0
它完美對我來說(自動版式)使用collectionViewFlowLayout和CELLSIZE
- 計算滾動型的內容大小,atScrollPosition:...)
相關問題
- 1. 如何滾動到UICollectionView的底部?
- 2. UICollectionView在啓動時溢出
- 3. 有沒有辦法自動滾動到UICollectionView的底部
- 4. UIImageView底下UICollectionView
- 5. iOS7啓動屏幕(啓動屏幕)在底部留下空間
- 6. UIcollectionView在頂部和底部的UIrefresh控制
- 7. 如何設置UICollectionView底部填充和滾動大小
- 8. 如何在UICollectionView中啓用滾動?
- 9. 在某些索引處啓動UICollectionView
- 10. 獲取GWT ScrollPanel在底部啓動其垂直滾動條
- 11. 在應用程序啓動時將ListView滾動到底部? (android)
- 12. 滾動底部
- 13. UICollectionView動態調整部分
- 14. 在使用skrollr滾動時,將底部固定在底部
- 15. 如果啓用滾動,如何在底部設置按鈕?
- 16. 將啓動加載程序放在FLASH內存的底部
- 17. 動態div底部
- 18. Javascript動畫底部
- 19. 滾動底部divs
- 20. Javascript滾動底部
- 21. 底部滾動條
- 22. 如何從底部導航抽屜啓動活動?
- 23. 滾動頂部,然後底部,然後頂部,然後底部
- 24. XCode iOS - 如何動畫UICollectionView的位置? (從屏幕底部滑入)
- 25. ios - 如何防止將新項目添加到底部時UICollectionview滾動
- 26. 當滾動條底部滾動到底部
- 27. UIRefreshControl底部的UICollectionView(加載更多的數據)
- 28. 將底部跨度放在底部的底部
- 29. 底部條不在底部對齊
- 30. 在UICollectionView部分出現
不適用於自動佈局。 – Chris