Как изменить пространство между ячейками в UICollectionView?
Я хочу уменьшить размер между ячейками в строке.
Теперь это выглядит так:
![введите описание изображения здесь]()
Я пытаюсь это сделать, чтобы уменьшить размер между ними:
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
но это мне не помогает. Что я делаю неправильно?
Ответы
Ответ 1
//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))
}
Ответ 2
Перейдите в раскадровку, щелкните правой кнопкой мыши по представлению коллекции и ![введите описание изображения здесь]()
И проверьте минимальное расстояние между ячейкой и уменьшите ее до нуля.
Ответ 3
В вашем коде вам нужно создать IBOutlet для вашего представления коллекции, а затем назначить collectionViewLayout как таковой:
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
collectionView!.collectionViewLayout = layout
Ответ 4
Простой
let layout = contactsCollectionView.collectionViewLayout as? UICollectionViewFlowLayout
layout?.minimumLineSpacing = 8
Ответ 5
Если вы создаете CollectionView
В StoryBoard
или Xib
, перейдите к StoryBoard
или Xib
и установите эти значения из
![введите описание изображения здесь]()
Ответ 6
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
}
}
Ответ 7
Swift 5 программно
lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
//Provide Width and Height According to your need
let width = UIScreen.main.bounds.width / 4
let height = UIScreen.main.bounds.height / 10
layout.itemSize = CGSize(width: width, height: height)
//Make Space as Zero
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
return UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
}()
Вы можете обеспечить намного больше настроек внутри lazy collectionView
блока CollectionView.
Ответ 8
(Свифт 4)
- Нажмите на коллекцию Посмотреть в раскадровке.
- на правой стороне, нажмите размер инспектора.
- управляйте и изменяйте значение размера ячейки, и вы сами это поймете.