[英]allowing collectionview to scroll while the content size is bigger than the cell size
所以我在我的vc中有一個collectionview像這樣:
lazy var collectionView : UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.headerReferenceSize = CGSize(width: self.view.frame.width, height: 96 + 42.5)
let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
cv.delegate = self
cv.dataSource = self
cv.register(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId)
cv.alwaysBounceVertical = true
return cv
}()
標頭的總高度為138.5像素。 因此顯示單元格的集合視圖的內容大小為view.frame.height - 138.5
。
在我的collectionview內部,每個單元格的高度為176像素,而view.frame.width
寬度如下:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: view.frame.width, height: 176)
}
問題是,當我返回3個或更少的單元格時,collectionview無法滾動。 如果有4個或更多單元格,則標題可以消失,並且只有collectionview內部的單元格可見。 我希望無論是否有1個單元格或4個單元格,都會發生這種情況。
如果collectionview內只有1個單元格,則我希望collectionview仍可滾動,並且當用戶向下滾動時,該單元格將位於屏幕頂部,而標題消失。
抱歉,如果難以理解,將很難解釋。
您可以嘗試collectionView.alwaysBounceVertical = true
。
根據文檔:如果將此屬性設置為true,並且bounces為true, 則即使內容小於滾動視圖的邊界,也允許垂直拖動 。 默認值為false。
編輯:
如果您希望即使沒有足夠的單元格也無法滾動標題元素,則使集合視圖contentSize
大於其frame
。 我認為您可以考慮以下布局:
ScrollView(Height: A, ContentHeight: A+B)
HeaderView(Height: B)
CollectionView(Height: A)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.