Eu tenho um UICollectionView
que mostra fotos. Eu criei a coleção usando UICollectionViewFlowLayout
. Funciona bem, mas eu gostaria de ter espaçamento nas margens. É possível fazer isso usando UICollectionViewFlowLayout
ou devo implementar o meu UICollectionViewLayout
?
ios
uicollectionview
uikit
Mert
fonte
fonte
UICollectionViewDelegateFlowLayout
à sua lista de delegados viewcontroller usar o métodoinsetForSectionAtIndex
Configurando inserções no Interface Builder, como mostrado na captura de tela abaixo
Irá resultar em algo como isto:
fonte
Para adicionar espaçamento no todo
UICollectionView
:Para brincar com o espaçamento entre elementos da mesma linha (coluna se você estiver rolando horizontalmente) e seus tamanhos:
fonte
collection.collectionViewLayout
necessidades de um elenco como no exemplo por @Pooja:UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout*) self.collectionViewLayout;
if let flow = collectionViewLayout as? UICollectionViewFlowLayout { flow.itemSize = CGSize(width: 100, height: 100) }
Swift 4
EDIT XCode 11.4 e swift 5
não funciona Use abaixo obras.
let flow = UICollectionViewFlowLayout()
fonte
backgroundColor
docollectionView
. Ou qualquer que seja a super visão.Apenas para corrigir algumas informações erradas nesta página:
1- minimumInteritemSpacing : o espaçamento mínimo a ser usado entre os itens na mesma linha.
O valor padrão: 10.0.
(Para uma grade de rolagem vertical, esse valor representa o espaçamento mínimo entre os itens na mesma linha.)
2- minimumLineSpacing : o espaçamento mínimo a ser usado entre linhas de itens na grade.
Ref: http://developer.apple.com/library/ios/#documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html
fonte
Cálculo de layout automático rápido e moderno
Embora esse tópico já contenha várias respostas úteis, quero adicionar uma versão Swift moderna , com base na resposta de William Hu. Também melhora duas coisas:
Aqui está o código:
fonte
itemsInOneLine
for 1, isso resultará em um NaN devido à divisão por zero aqui:itemsInOneLine / (itemsInOneLine - 1)
use
setMinimumLineSpacing:
esetMinimumInteritemSpacing:
noUICollectionViewFlowLayout
-Object.fonte
Usando
collectionViewFlowLayout.sectionInset
oucollectionView:layout:insetForSectionAtIndex:
está correto.No entanto, se o seu collectionView tiver várias seções e você desejar adicionar margem a todo o collectionView, recomendo usar o scrollView contentInset:
fonte
Para colocar espaço entre
CollectionItem
s, use esteescreva estas duas linhas em viewdidload
fonte
Defina a
insetForSectionAt
propriedade doUICollectionViewFlowLayout
objeto anexado ao seuUICollectionView
Certifique-se de adicionar este protocolo
Rápido
Objetivo - C
fonte
No Objetivo-C
Tudo o que você precisa fazer é alterar o valor itemsPerRow e ele atualizará o número de itens por linha de acordo. Além disso, você pode alterar o valor do espaçamento, se desejar um espaçamento mais ou menos geral.
fonte
Para adicionar margens às células especificadas, você pode usar esse layout de fluxo personalizado. https://github.com/voyages-sncf-technologies/VSCollectionViewCellInsetFlowLayout/
fonte
No swift 4 e no autoLayout, você pode usar o sectionInset assim:
fonte
Para adicionar uma separação de 10 px entre cada seção, basta escrever este
fonte
fonte