Как правильно выровнять эти ячейки коллекции? - PullRequest
0 голосов
/ 06 сентября 2018

Я создаю страницу, где я использую представление коллекции. Макет будет похож на приложение Apple Music, где в каждом ряду отображаются две квадратные ячейки

Мне нужен такой макет - этот макет имеет супер равные поля вокруг, но в моем приложении первая ячейка коллекции прикреплена к левому краю, а вторая ячейка - к правому краю

    private let cellReuseIdentifier = "cellReuseIdentifier"

    class FeedViewController: UICollectionViewController {

        override func viewDidLoad() {
            super.viewDidLoad()
            collectionView?.backgroundColor = .white
            setupNavBar()
            setupCollectionView()
        }

        func setupCollectionView() {
            collectionView?.register(FeedCollectionViewCell.self, forCellWithReuseIdentifier: cellReuseIdentifier)
        }

        override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
            return 6
        }

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

    }

    extension FeedViewController: UICollectionViewDelegateFlowLayout {

        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            let padding: CGFloat =  25
            let collectionViewSize = collectionView.frame.size.width - padding

            return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)

        }

    }

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Используйте следующий код для достижения ваших потребностей.

Значение заполнения должно быть сложением всех трех пробелов (слева, по центру, справа) Давайте предположим, что значение отступа = 25, тогда для расчета точного интервала следует учитывать значение 75.

И установите левое, верхнее, центральное и правое пространство со значением 25 (как вы хотите добавить пространство).

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let cellWidth: CGFloat = (collectionView.frame.size.width / 2) - ((padding value * 3)/2)
    let cellHeight: CGFloat = (collectionView.frame.size.height / 2)  - ((padding value * 3)/2) 
    return CGSize.init(width: cellWidth, height: cellHeight) 
}

Конечно, это будет работать

0 голосов
/ 06 сентября 2018

Вы можете использовать свойства макета, чтобы установить вкладку вида коллекции и расстояние между ячейками в функции настройки вида коллекции:

guard let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout else { return }

layout.sectionInset = UIEdgeInsets(top: yourTopValue, left: yourLeftValue, bottom: yourBottomValue, right: yourRightValue)
layout.minimumInteritemSpacing = yourSpacing
layout.minimumLineSpacing = yourSpacing
...