Ответ 1
Лучший способ сделать это я нашел либо в раскадровке, либо в методах делегата, размер предмета - 159, а разница между ними равна 0.5 или даже меньше. Просто поиграйте с ним.
Как я могу получить два столбца в UICollectionView, которые занимают все пространство без каких-либо полей или пробелов, похожих на изображение, которое я рисовал ниже:
Я попытался использовать следующий код:
- (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;
}
но получил этот результат:
Лучший способ сделать это я нашел либо в раскадровке, либо в методах делегата, размер предмета - 159, а разница между ними равна 0.5 или даже меньше. Просто поиграйте с ним.
Реализацией UICollectionViewDelegateFlowLayout протокола, вы можете найти множество методов для реализации макета UICollectionView.
collectionView:layout:minimumInteritemSpacingForSectionAtIndex:
collectionView:layout:minimumLineSpacingForSectionAtIndex:
должно быть достаточно, чтобы решить эту проблему.
Также вы можете реализовать, numberOfItems и numberOfSections, чтобы указать количество строк, столбцов.
В качестве альтернативы вы можете указать размер ваших ячеек как (ширина UICollectionView)/(количество столбцов, которое вы хотите) - некоторое смещение между ячейками
в cellForItemAtIndexPath.
По умолчанию ячейки вычисляются по этому и соответствующим образом размещаются. Просто уменьшая размер, вы увидите несколько столбцов. Ref1 Ref2
чтобы сначала установить желаемый отступ в 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)
}
@jacobsieradzki Я думаю, вам нужно внести некоторые изменения в размер ваших ячеек, попробуйте сначала сделать их меньше, я думаю, что, вероятно, 2 ячейки шириной 160,0 + 1,0 межстрочного интервала являются причиной вашей проблемы.
Несколько дней назад я следил за учебным пособием Рэя Вендерлиха, который был очень прост и объясняет очень понятные концепции UICollectionView, также в примерном проекте они делают что-то похожее на то, что вы пытаетесь достичь, вот ссылка в это помогает: CollectionViewTutorial