Swift: изменить ширину ячейки Layout в UICollectionView при добавлении элементов - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в Swift, я хочу сделать макет UICollectionViewCell динамическим примером: если у нас есть добавленный элемент, чтобы он выглядел так:

1.Если у нас есть один элементвыглядеть следующим образом

enter image description here

2.Если у нас есть два элемента, добавленных, чтобы выглядеть так:

enter image description here

3.если у нас снова есть пункт 3, который будет выглядеть следующим образом:

enter image description here Этот процесс будет продолжаться до тех пор, пока есть элементы

Спасибо!

1 Ответ

0 голосов
/ 24 мая 2018

Это метод UICollectionViewDelegateFlowLayout для размера элементов. Просто проверьте общее количество элементов нечетное / четное и исходя из того, что вы определяете ширину ячейки.

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    if arrList.count % 2 == 0 {

        let width = (collectionView.frame.width-20)/2
        let height : CGFloat = 100.0
        return CGSize(width: width, height: height)

    }else {

        if arrList.count-1 == indexPath.row {
            let width = collectionView.frame.width-10
            let height : CGFloat = 100.0
            return CGSize(width: width, height: height)
        }else{
            let width = (collectionView.frame.width-20)/2
            let height : CGFloat = 100.0
            return CGSize(width: width, height: height)
        }
    }

}

Это промежуточные методы.

//these methods are to configure the spacing between items

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsetsMake(0,5,5,5)
}

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 10
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...