Как показать два предмета в одном ряду? с использованием uicollectionView - PullRequest
0 голосов
/ 15 марта 2020

Я следил за этим видео для изучения Collection View (https://www.youtube.com/watch?v=jQ8EUsQZJ5g)

И я написал такой код:

if ( CollectionViewFlowLayout == nil ){
        let numberOfItemsForRow : CGFloat = 2
        let UpDownSpace : CGFloat = 5
        let LeftRightSpace : CGFloat = 5

        //CollectionViewFlowLayout은 delgate 처럼 소재지를 수정하고 꾸밀 수 있는 것이다.
        CollectionViewFlowLayout = UICollectionViewFlowLayout()
        //이건 margin의 크기를 정해주는 것이다.
        CollectionViewFlowLayout?.sectionInset = UIEdgeInsets.zero
        //이건 화면을 수직으로 내릴 것이냐, 수평으로 스크롤 할것이냐를 정해준다.
        CollectionViewFlowLayout?.scrollDirection = .vertical
        //소재지의 위 아래의 간격을 정해준다.
        CollectionViewFlowLayout?.minimumLineSpacing = UpDownSpace
        //같은 줄에 있는 소재지의 오른쪽 왼쪽 사이의 간격을 정해준다.
        CollectionViewFlowLayout?.minimumInteritemSpacing = LeftRightSpace


        let total = (LeftRightSpace * (numberOfItemsForRow - 1))

        let width = (CollectionView.frame.width - total) / numberOfItemsForRow

        let height = width

        //itemsize : 소재지의 크기를 정 할 수 있다
        CollectionViewFlowLayout?.itemSize = CGSize(width: width, height: height)


        CollectionView.setCollectionViewLayout(CollectionViewFlowLayout!, animated: true)


    }

Но когда я использую симулятор с iPhone 8, он совершает ошибку

Другие вещи хороши! без iPhone 8

введите описание изображения здесь

1 Ответ

0 голосов
/ 15 марта 2020

Я думаю, что ваше total должно быть рассчитано как:

let total = LeftRightSpace * (numberOfItemsForRow + 1), потому что вы убираете левый, правый и промежуточный интервалы.

Или попробуйте рассчитать width как:

let width = (UIScreen.main.bounds.width - total) / numberOfItemsForRow

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