0

我跟着这个视频学习收藏视图(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

在此处输入图像描述

4

1 回答 1

0

我认为你total应该计算为:

let total = LeftRightSpace * (numberOfItemsForRow + 1),因为您正在取消左侧、右侧和项间间距。

或尝试计算width为:

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

于 2020-03-15T13:51:44.240 回答