Установить UIEdgeInsets UICollectionView

Я хотел, чтобы элементы UICollectionView были в центре, поэтому я написал следующий код:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
    let collectionViewWidth = collectionView.bounds.width
    let collectionViewHeight = collectionView.bounds.height
    let numberOfRows = CGFloat(collectionView.numberOfItemsInSection(0))
    let leftValue = (collectionViewWidth / 2.0) - (numberOfRows * 5) - (numberOfRows * (collectionViewHeight / 2.0))
    print(leftValue)
    return UIEdgeInsets(top: 0, left: leftValue, bottom: 0, right: 0)
}

Но теперь проблема в том, что я не могу прокрутить его влево, так как мои левые вставки изменились. Пожалуйста, предложите мне какое-нибудь решение.

1 ответ

Решение

Я понял это, выполнив некоторые вычисления и все, так что вот код:

func refreshCollectionView(count: Int) {
    let collectionViewHeight = collectionView.bounds.height
    let collectionViewWidth = collectionView.bounds.width
    let numberOfItemsThatCanInCollectionView = Int(collectionViewWidth / collectionViewHeight)
    if numberOfItemsThatCanInCollectionView > count {
        let totalCellWidth = collectionViewHeight * CGFloat(count)
        let totalSpacingWidth: CGFloat = CGFloat(count) * (CGFloat(count) - 1)
        // leftInset, rightInset are the global variables which I am passing to the below function
        leftInset = (collectionViewWidth - CGFloat(totalCellWidth + totalSpacingWidth)) / 2;
        rightInset = -leftInset
    } else {
        leftInset = 0.0
        rightInset = -collectionViewHeight
    }
    collectionView.reloadData()
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
    return UIEdgeInsetsMake(0, leftInset, 0, rightInset)
}

Для более подробного кода вы можете увидеть мой код здесь https://github.com/anirudha-music/CollectionViewCenter

Другие вопросы по тегам