У меня есть, UICollectionView
который показывает фотографии. Я создал коллекцию с помощью UICollectionViewFlowLayout
. Это хорошо работает, но я хотел бы иметь интервалы на полях. Можно ли сделать это с помощью UICollectionViewFlowLayout
или я должен реализовать свой собственный UICollectionViewLayout
?
ios
uicollectionview
uikit
Mert
источник
источник
UICollectionViewDelegateFlowLayout
в свой список делегатов ViewController, чтобы использовать методinsetForSectionAtIndex
Настройка вставок в Интерфейсном Разработчике, как показано на скриншоте ниже
Результатом будет что-то вроде этого:
источник
Чтобы добавить интервал на весь
UICollectionView
:Чтобы поиграть с расстоянием между элементами одной строки (столбец, если вы прокручиваете по горизонтали) и их размерами:
источник
collection.collectionViewLayout
нуждается в приведении, как в примере @Pooja:UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout*) self.collectionViewLayout;
if let flow = collectionViewLayout as? UICollectionViewFlowLayout { flow.itemSize = CGSize(width: 100, height: 100) }
Swift 4
РЕДАКТИРОВАТЬ XCode 11.4 и Swift 5
не работает Используйте ниже работает.
let flow = UICollectionViewFlowLayout()
источник
backgroundColor
изcollectionView
. Или какой бы супер вид.Просто чтобы исправить некоторую неправильную информацию на этой странице:
1- imumInteritemSpacing : минимальный интервал для использования между элементами в одной строке.
Значение по умолчанию: 10,0.
(Для сетки с вертикальной прокруткой это значение представляет минимальное расстояние между элементами в одной строке.)
2- imumLineSpacing : минимальный интервал для использования между линиями элементов в сетке.
Ссылка: http://developer.apple.com/library/ios/#documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html
источник
Modern Swift, автоматический расчет макета
Хотя эта ветка уже содержит кучу полезных ответов, я хочу добавить современную версию Swift , основанную на ответе Уильяма Ху. Это также улучшает две вещи:
Вот код:
источник
itemsInOneLine
равно 1, то это приведет к NaN из-за деления на ноль здесь:itemsInOneLine / (itemsInOneLine - 1)
использовать
setMinimumLineSpacing:
иsetMinimumInteritemSpacing:
наUICollectionViewFlowLayout
объекте.источник
Используя
collectionViewFlowLayout.sectionInset
илиcollectionView:layout:insetForSectionAtIndex:
правильно.Однако, если ваш collectionView имеет несколько разделов и вы хотите добавить поле для всего collectionView, я рекомендую использовать scrollView contentInset:
источник
Чтобы поместить пространство между
CollectionItem
s используйте этонапишите эти две строки в viewdidload
источник
Установите
insetForSectionAt
свойствоUICollectionViewFlowLayout
объекта, прикрепленного к вашемуUICollectionView
Обязательно добавьте этот протокол
стриж
Цель - С
источник
В Objective-C
Все, что вам нужно сделать, это изменить значение itemsPerRow, и оно соответствующим образом обновит количество элементов в строке. Кроме того, вы можете изменить значение интервала, если хотите более или менее общий интервал.
источник
Для добавления полей к указанным ячейкам вы можете использовать этот пользовательский макет потока. https://github.com/voyages-sncf-technologies/VSCollectionViewCellInsetFlowLayout/
источник
В swift 4 и autoLayout вы можете использовать sectionInset следующим образом:
источник
Чтобы добавить 10px разделение между каждым разделом, просто напишите это
источник
источник