Два столбца на экране uicollectionview

Как я могу получить два столбца в UICollectionView, которые занимают все пространство без каких-либо полей или пробелов, похожих на изображение, которое я рисовал ниже: enter image description here

Я попытался использовать следующий код:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return CGSizeMake(160, 160);
}

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
    return 1.0;
}

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
    return 1.0;
}

но получил этот результат:

enter image description here

Ответ 1

Лучший способ сделать это я нашел либо в раскадровке, либо в методах делегата, размер предмета - 159, а разница между ними равна 0.5 или даже меньше. Просто поиграйте с ним.

Ответ 2

Реализацией UICollectionViewDelegateFlowLayout протокола, вы можете найти множество методов для реализации макета UICollectionView.

collectionView:layout:minimumInteritemSpacingForSectionAtIndex:
 collectionView:layout:minimumLineSpacingForSectionAtIndex:

должно быть достаточно, чтобы решить эту проблему.

Также вы можете реализовать, numberOfItems и numberOfSections, чтобы указать количество строк, столбцов.
В качестве альтернативы вы можете указать размер ваших ячеек как (ширина UICollectionView)/(количество столбцов, которое вы хотите) - некоторое смещение между ячейками
в cellForItemAtIndexPath.
По умолчанию ячейки вычисляются по этому и соответствующим образом размещаются. Просто уменьшая размер, вы увидите несколько столбцов. Ref1 Ref2

Ответ 3

чтобы сначала установить желаемый отступ в viewDidLoad, например, поместите дополнение на 10

let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10)
        collectionView.collectionViewLayout = layout

а затем используйте этот

func collectionView(collectionView: UICollectionView,
        layout collectionViewLayout: UICollectionViewLayout,
        sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
            //device screen size
            let width = UIScreen.mainScreen().bounds.size.width
            //calculation of cell size
            return CGSize(width: ((width / 2) - 15)   , height: 155)
    }

Ответ 4

@jacobsieradzki Я думаю, вам нужно внести некоторые изменения в размер ваших ячеек, попробуйте сначала сделать их меньше, я думаю, что, вероятно, 2 ячейки шириной 160,0 + 1,0 межстрочного интервала являются причиной вашей проблемы.
Несколько дней назад я следил за учебным пособием Рэя Вендерлиха, который был очень прост и объясняет очень понятные концепции UICollectionView, также в примерном проекте они делают что-то похожее на то, что вы пытаетесь достичь, вот ссылка в это помогает: CollectionViewTutorial