Подтвердить что ты не робот

UICollectionView - расстояние между ячейками?

Я использую UICollectionView с шириной ячейки 67, сейчас я использую макет потока.

У меня есть 3 клетки подряд с пространством 30 пикселей между клетками. Как можно сделать это расстояние меньше, чтобы я мог разместить четыре клетки подряд? Этот метод как-то связан с этим?

 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
 {
    return UIEdgeInsetsMake(10, 10, 10, 10);
 }
4b9b3361

Ответ 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
}