簡體   English   中英

如何設置集合視圖單元格大小與iOS中的集合視圖完全相同?

[英]How to set the collection view cell size exactly equal to the collection view in iOS?

我想設置一個集合視圖,它只顯示一個元素,並且水平滾動。 我想知道如果集合視圖與superview(手機大小)具有相同的寬度,如何為兩者設置相同的大小。

任何幫助將非常感激。

簡單回答:

UICollectionViewDelegateFlowLayout添加到您的類,然后使用此方法:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: yourCollectionView.bounds.width, height: yourCollectionView.bounds.height)
}

使其水平:

在此輸入圖像描述

如果你想以編程方式添加它,你可以試試這個:

lazy var collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        layout.scrollDirection = .horizontal
        layout.minimumLineSpacing = 0
        let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
        cv.backgroundColor = .white
        cv.delegate = self
        cv.dataSource = self
        cv.isPagingEnabled = true
        cv.showsHorizontalScrollIndicator = false
        return cv
}()

試試這段代碼:

要以編程方式設置collectionView滾動方向。

override func viewDidLoad() {
    super.viewDidLoad()
       if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
       layout.scrollDirection = .horizontal
    }
    }

設置collectionView布局

     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
      let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
      layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
      layout.minimumInteritemSpacing = 0
      layout.minimumLineSpacing = 0
      layout.invalidateLayout()

      return CGSize(width: self.view.frame.width, height:(self.view.frame.height) // Set your item size here
     }

注意 :布局在Swift 3中進行了測試。但是,我希望您考慮使用頁面視圖。如果您沒有從CollectionView傳遞任何數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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