UICollectionView с 2 столбцами squa sh второй столбец - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть UICollectionview, который встроен в UIView (я знаю, что возникает вопрос, почему: если говорить коротко, это самый простой способ, которым я могу выполнить sh этот пользовательский интерфейс).

Проблема в том, что я не могу понять, как расположить 2 столбца по центру с небольшим отступом слева и справа между ячейками (фиолетовые блоки - изображения Мне просто пришлось стереть их, потому что это клиент) Он всегда сжимает нужные клетки с изображениями. Вот что у меня есть:

override func viewDidLoad() {
    super.viewDidLoad()
    collectionView.dataSource = self
    collectionView.delegate = self
    let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 0, left: 5, bottom: 10, right: 5)
    collectionView.collectionViewLayout = layout
}

extension LobbyViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let width = UIScreen.main.bounds.size.width
        return CGSize(width: ((width / 2)), height: 150)
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
        return 0
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
        return 0
    }
}

Вот эффект:

preview

Ответы [ 3 ]

2 голосов
/ 04 февраля 2020

Вот проблема

CGSize(width: ((width / 2)), height: 150)

Вы также должны учитывать интервал вставки слева, справа и ячейки в представлении коллекции.

для примера:

CGSize(width: ((width - 10 - minimumInteritemSpacing) / 2), height: 150)

Вы можете получить minimumInteritemSpacing из collectionView.collectionViewLayout свойство

Я установил здесь 10 стати c, из-за этого.

layout.sectionInset = UIEdgeInsets(top: 0, left: 5, bottom: 10, right: 5)
0 голосов
/ 04 февраля 2020
  • Дайте отступы со всех сторон представления коллекции, как вам требуется для дизайна, а затем запишите этот код в вашем контроллере представления:

    let numberOfCellsPerRow: CGFloat = 2
    if let flowLayout = yourCollectionView?.collectionViewLayout as? UICollectionViewFlowLayout {
        flowLayout.itemSize = CGSize(width: 160, height: 160)
    }
    

Надеюсь, что это будет помочь вам !!

0 голосов
/ 04 февраля 2020

Вы можете использовать это:

Попробуйте с return CGSize(width: ((collectionView.frame.widht / 2)), height: 150)

и измените MinSpacing на 0

enter image description here

Это уберет пробел между collectionviewcell.

, может быть, это вам поможет.

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