UICollectionView - расстояние между ячейками?
Я использую UICollectionView с шириной ячейки 67, сейчас я использую макет потока.
У меня есть 3 клетки подряд с пространством 30 пикселей между клетками. Как можно сделать это расстояние меньше, чтобы я мог разместить четыре клетки подряд? Этот метод как-то связан с этим?
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(10, 10, 10, 10);
}
Ответы
Ответ 1
Этот метод UICollectionViewFlowLayoutDelegate
поможет вам.
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 10; // This is the minimum inter item spacing, can be more
}
Еще один, если вам нужно больше места, чтобы упорядочить ваши ячейки, отрегулируйте edgeInsets
также
Ответ 2
Вы можете настроить расстояние между ячейками или строками, используя следующие свойства.
1) Задание пространства между строками.
[self.collectionView setMinimumLineSpacing:5];
2) Для установки пробела между элементами/ячейками.
[self.collectionView setMinimumInteritemSpacing:5];
Вы также можете настроить его из InterfaceBuilder (IB). Просто выберите UICollectionView из файла раскадровки /Xib и нажмите Inspector размера, как показано на рисунке ниже. ![введите описание изображения здесь]()
Ответ 3
Из этого.
Вам нужно изменить minimumInteritemSpacing и minimumLineSpacing.
UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.itemSize = CGSizeMake(cellWidth, cellHeight);
flow.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flow.minimumInteritemSpacing = 0;
flow.minimumLineSpacing = 0;
mainCollectionView.collectionViewLayout = flow;
Ответ 4
Нет, это не так. Просто измените макет minimumInteritemSpacing
.
Ответ 5
Вы можете использовать метод делегата, например:
для изменения пространства между ячейками в секции.
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
Для отображения верхнего, нижнего уложения между ячейками разных разделов.
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
//Макет: установите края
// установка вставки для ячейки
- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
//top,left,botttom,right
Ответ 6
swift 3.0
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
if DEVICE_IDIOM == .pad {
return 15.0
}
else {
return 10.0
}
}
Ответ 7
У меня была такая же проблема.
В моем случае мне нужна ретунгальная ячейка.
Для достижения желаемого результата я использовал UICollectionViewDelegateFlowLayout.
Это моя реализация одного из методов:
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
{
CGFloat width = CGRectGetWidth(self.view.frame)/3.0f;
return CGSizeMake(width, (width * 1.1f));
}
Это сработало для меня! Надеюсь, это поможет кому-то.
Ответ 8
Swift 4.2
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
}