簡體   English   中英

當內容大小大於單元格大小時,允許collectionview滾動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM