Swift UICollectionViewDelegateFlowLayout - PullRequest
       4

Swift UICollectionViewDelegateFlowLayout

0 голосов
/ 26 сентября 2019

Я использую UICollectionViewDelegateFlowLayout для определения размера ячеек в горизонтально прокручиваемом collectionView.

Когда ViewController загружает ячейки в представлении коллекции ожидаемого размера.Однако, когда я прокручиваю показанные последующие ячейки не имеют правильного размера.

Почему это происходит и как я могу убедиться, что все ячейки имеют правильный размер?

Правильный размер при нагрузке:

on load

Размерыпосле прокрутки:

after scroll

import Foundation
import UIKit
import Firebase

class Bundles: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

    var bundleArray: [bundleStruct] = []

    @IBOutlet var collectionView: UICollectionView!

    override func viewDidLoad() {
        self.collectionView.register(UINib(nibName: "BundleCell", bundle: nil), forCellWithReuseIdentifier: "BundleCell")
        collectionView.dataSource = self
        collectionView.delegate = self
    }

    override func viewDidAppear(_ animated: Bool) {
        DatabaseClass.getBundles(completion: { result in
            self.bundleArray = result
            self.collectionView.reloadData()
        })
    }

  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: collectionView.frame.size.width / 2, height: collectionView.frame.size.height)
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return bundleArray.count * 3
       }

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...