Отображение трех ячеек в виде коллекции - PullRequest
0 голосов
/ 26 февраля 2019

Я сделал коллекционное представление, которое показывает изображение в формате сетки.Код дается следующим образом ...

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

    @IBOutlet weak var myCollectionView: UICollectionView!
    let array:[String] = ["1", "2", "3"]

    override func viewDidLoad() {
        super.viewDidLoad()
        let itemSize = UIScreen.main.bounds.width/3 - 3

        let layout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
        layout.itemSize = CGSize(width: itemSize, height: itemSize + 100)

        layout.minimumInteritemSpacing = 3
        layout.minimumLineSpacing = 3

        myCollectionView.collectionViewLayout = layout


    }

    //Number of views
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return array.count
    }

    //Populate view
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
    {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! myCell
        cell.myImageView.image = UIImage(named: array[indexPath.row] + ".jpg")
        return cell

    }

Теперь отображаются такие клетки, как ...

enter image description here

НоЯ хочу, чтобы изображения были видны так ... enter image description here

Для этого я добавил этот блок кода к концу приведенных выше строк кода ...

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

    if array.count == 3 {
        if array[indexPath.row] == "1" {
            return CGSize(width: 100, height: 200)
        }
        if array[indexPath.row] == "2" {
            return CGSize(width: 100, height: 100)
        }
        if array[indexPath.row] == "3" {
            return CGSize(width: 100, height: 100)
        }
    }
    return CGSize(width: 100, height: 100)
}

Но при этом отображаются такие изображения ...

enter image description here

Что я здесь не так делаю ..?Кроме того, есть ли лучший подход ..?

РЕДАКТИРОВАТЬ 1: Если есть 5 изображений, это показано так ...

enter image description here

1 Ответ

0 голосов
/ 26 февраля 2019

Вам необходимо создать пользовательский макет, как описано в приведенной ниже ссылке.

Raywenderlich - Руководство по просмотру коллекций по пользовательскому макету

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