Я хочу уменьшить размер между ячейками в строке. Теперь это выглядит так:

enter image description here

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

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0

Но мне это не помогает. Что я делаю не так?

22
John Doe 26 Фев 2016 в 17:20

7 ответов

Лучший ответ
//Objective c
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
        return CGSizeMake((collectionView.frame.size.width/3)-20, 100);
    }

// Swift 2.0

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSizeMake((collectionView.frame.size.width / 3) - 20, 100)
}

// Swift 3.0
override func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: CGFloat((collectionView.frame.size.width / 3) - 20), height: CGFloat(100))
}
29
Yagnesh Dobariya 17 Дек 2016 в 03:59

Если вы создаете CollectionView In StoryBoard или Xib, перейдите к StoryBoard или Xib и установите эти значения из

enter image description here

1
MinnuKaAnae 23 Янв 2018 в 11:01
extension ViewController: UICollectionViewDelegateFlowLayout {
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            let collectionWidth = collectionView.bounds.width
            return CGSize(width: collectionWidth, height: collectionWidth/2)
        }
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
            return 0
        }
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
            return 100
        }
    }
3
Gabriel 24 Авг 2019 в 17:14

В вашем коде вы должны создать IBOutlet для представления вашей коллекции, а затем назначить collectionViewLayout как таковой:

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
layout.scrollDirection = .horizontal
collectionView!.collectionViewLayout = layout
15
Vinu David Jose 18 Авг 2020 в 09:51

Перейдите в раскадровку, щелкните правой кнопкой мыши представление коллекции и введите здесь описание изображения

И проверьте минимальное расстояние между ячейками и уменьшите его до нуля.

29
Himan Dhawan 26 Фев 2016 в 16:20

(Свифт 4)

  • Нажмите на коллекцию Просмотреть в раскадровке.
  • справа нажмите на инспектор размера.
  • управляйте и изменяйте значение размера ячейки, и вы разберетесь в этом сами.
0
majid khan 27 Май 2019 в 10:56

Это просто

let layout = contactsCollectionView.collectionViewLayout as? UICollectionViewFlowLayout
layout?.minimumLineSpacing = 8
4
MinnuKaAnae 23 Янв 2018 в 12:02