Как показать ячейку collectionView по одной с вертикальной прокруткой - PullRequest
0 голосов
/ 10 июля 2019

Я хочу показывать по одной ячейке за раз в представлении коллекции при вертикальном скольжении.Но он показывает половину следующего представления.как установить его для одной ячейки за раз?

class CollectionViewCell : UICollectionViewCell {


    @IBOutlet weak var lable: UILabel!
    @IBOutlet weak var imageView: UIImageView!

}

class ViewController: UIViewController, UICollectionViewDataSource {

    let reuseIdentifier = "collectionViewCellId"
    var lableArray = ["1","2","3","4","5","6","7","8","9","10"]
    @IBOutlet weak var collectionView: UICollectionView!

    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return self.lableArray.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CollectionViewCell
        let item = lableArray[indexPath.row]
        cell.imageView.backgroundColor = UIColor.randomColor()
        cell.lable.text = item
        return cell
    }

}

t

Ответы [ 3 ]

1 голос
/ 10 июля 2019

UICollectionViewFlowLayout имеет метод делегата sizeForItemAt, который можно использовать для получения CGSize для отображаемого UICollectionViewCell. Вам просто нужно соответствовать, и вы готовы идти!

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
     //....

     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return collectionView.size //In case if your collection is of full size
     }
}
1 голос
/ 10 июля 2019

Вам нужно наследовать от UICollectionViewDelegateFlowLayout, а затем использовать

internal func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: collectionView.frame.width, height: view.frame.height)
}
0 голосов
/ 10 июля 2019

При создании UICollectionView добавьте FlowLayout

    let layout = UICollectionViewFlowLayout.init()
    layout.scrollDirection = UICollectionView.ScrollDirection.vertical
    layout.itemSize = CGSize(width: collectView_WIDTH, height: collectView_HEIGHT)
    let collectionViewItem = UICollectionView(frame: CGRect.zero, collectionViewLayout: UICollectionViewFlowLayout.init())
    collectionViewItem.setCollectionViewLayout(layout, animated: true)

Добавить

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    return CGSize(width: collectView_WIDTH, height: collectView_HEIGHT)

}
...