簡體   English   中英

如何將 colectionViewCells 與左側對齊?

[英]How Can I align the colectionViewCells to the left?

我有一個有時只有 1 個項目的 ac UIolectionView 如果是這種情況,則項目在中間對齊,請參見圖片:

在此處輸入圖片說明

但我想要的是該項目與左側對齊。

我在 StackOverflow 上找到了這個答案, UICollectioniew 中的 leftAlign 單元格 - StackOverFlow ,但是當我將接受的答案中給出的類添加到我的代碼庫時,並將其添加到viewControler

        let leftAlignLayout = AlignedCollectionViewFlowLayout(horizontalAlignment: .left, verticalAlignment: .top)
        gamesColectionView.collectionViewLayout = leftAlignLayout

它確實按照我想要的方式對齊,但它使細胞非常小(見圖)

在此處輸入圖片說明

我還嘗試從 Github 添加此內容: AlignedCollectionViewFlowLayout - GitHub但結果相同。

我嘗試通過將其添加到我的viewController文件來修復該錯誤:

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

但這沒有用。

有人對我如何解決這個問題有建議嗎? 我不知道我做錯了什么,或者我忘了做什么。

多謝! BSM

嘗試這個:

var layout: UICollectionViewFlowLayout = {
    let layout = UICollectionViewFlowLayout()
    layout.scrollDirection = .horizontal
    layout.minimumLineSpacing = 8.0
    layout.minimumInteritemSpacing = 8.0
    let width = (UIScreen.main.bounds.size.width - 40.0) / 4
    layout.estimatedItemSize = CGSize(width: width, height: 98.0)
    return layout
}()

和:

override func viewDidLoad() {
    super.viewDidLoad()
    self.collectionView?.collectionViewLayout = layout
    self.collectionView!.contentInset = UIEdgeInsets(top: 0, left: 0, bottom:0, right: 0)
}

您不需要使用 sizeForItemAt。 如果你想要更多,你可以看看我的項目 用它的超級視圖檢查你的 imageView 的約束

您可以使用以下代碼管理您的單元格。 不要忘記添加UICollectionViewDelegateFlowLayout

func collectionView(_ collectionView: UICollectionView,
                layout collectionViewLayout: UICollectionViewLayout,
                sizeForItemAt indexPath: IndexPath) -> CGSize {
// your code here
} 

您無需執行任何特殊操作即可使collectionViewCells左對齊。

如果constraints正確, cells將自動從左側開始渲染。

class VC: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 1
    }

        func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell
            return cell
        }

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

只需根據storyboard本身的要求將scrollDirection設置為verticalhorizontal

無需使用任何 3rd 方庫即可使其正常工作。

在此處輸入圖片說明

暫無
暫無

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

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