Квадратные item'ы в collectionView

swift

#1

Всем привет!
Никак не могу найти формулу под адаптивные квадратные айтемы в UICollectionView.

Необходимо, чтобы на каждой диагонали был item квадратный.

Написал что-то типа такого, но от iPhone 11 высота всё же выше.

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

Необходимо, чтобы в экран влезало два айтема.


#2

По горизонтали или вертикали?
Из вашей формулы не понятно, т.к. вы делите и ширину и высоту, а так делать нельзя, если вам нужен квадрат.
Вам нужно лишь получить одну величину и сделать вторую равной первой.
И еще у вас явные проблемы то ли с математикой, то ли с геометрией.
Я еще понимаю когда вы делите ширину на 2. Но что значит деление высоты на 3.5? От куда это число?
Ваша формула говорит что вы хотите вместить на экран 2 ячейки по горизонтали и 3 с половиной по высоте, грубо говоря.


#3

С утра туплю :slight_smile:
Извиняюсь за глупый вопрос.

var screenSize: CGRect {
    return UIScreen.main.bounds
}

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

#4

Значит вертикальное расположение по 2 квадрата горизонтально?
Могу предроложить что это для галереи?


#5

Да, всё верно. Можно сказать и для галлереи.


#6
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: UIScreen.main.bounds.width / 2.5, height: collectionView.frame.height)
    }

так будет 2 ячейки по ширине и часть следующей будет виднеться, показывая пользователю, что надо скороллить…