Вставки разделов не соблюдаются при рендеринге ячеек UICollectionView

У меня есть UICollectionView, содержащий два раздела. Я дал вставки раздела left = 5 и right = 5 из раскадровки. Я использую один и тот же .xib для ячеек обоих разделов. Я ввожу размер ячеек в sizeForItemAtIndexPath

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

        let itemWidth = self.collectionViewTrending.bounds.size.width - 10
        if(indexPath.section == 0) {

                return CGSizeMake(itemWidth , 200)

        } else {

            let product = self.products.objectAtIndex(indexPath.row) as! Product
            let imageHeight = CGFloat(product.imageHeight)
            return CGSizeMake(itemWidth, imageHeight * 0.81)
        }



   }

Проблема вот в чем:

Для Раздела 0 ячейка центрируется, и вставки разделов учитываются.

Для Раздела 1 левая вставка раздела соблюдается, а правая - нет, и все ячейки раздела 1 имеют свои правые края, соприкасающиеся с правым краем collectionView.

Почему это происходит и как я могу это решить?


person MrDank    schedule 12.05.2016    source источник


Ответы (1)


Вставки раздела относятся к разделу в целом:

Левая вставка влияет на расстояние между левым краем раздела и левым краем ПЕРВОЙ ячейки в этом разделе.

Правая вставка влияет на расстояние между правым краем ПОСЛЕДНЕЙ ячейки в разделе и правым краем этого раздела.

Другими словами, поведение, которое вы видите, вероятно, связано с тем, что у вас есть только одна ячейка в разделе 0 и несколько ячеек в разделе 1.

Вероятно, вам нужно пространство между ячейками, чтобы создать видимость границы вокруг каждой ячейки.

Для этого установите атрибут Min Spacing / For Cells представления коллекции в раскадровке. Или установите это динамически в методе делегата collectionView minimumInteritemSpacingForSectionAtIndex.

person Mike Taverne    schedule 12.05.2016