Le programme d'installation:cellules UICollectionView en continu centre à la fois verticalement et horizontalement à chaque fois que de nouveaux apparaissent
J'ai actuellement un UICollectionView
qui est un groupe de cercles pour les cellules à mimer l'interface utilisateur de la montre d'Apple écran d'accueil. Je l'ai fait en suivant this guide. Dans le cas où vous n'avez pas lu l'article ou qu'il ne fonctionne pas pour une raison quelconque, il s'agit en fait d'une UICollectionView de cercles dont les externes sont réduits lorsque vous les faites défiler du centre.
Le problème:
Je veux des bulles pour faire apparaître dynamiquement de telle sorte que chaque fois qu'un utilisateur gagne un prix, le prix « apparaît », à savoir dans l'animez, mise à l'échelle de 0 à 1. Cependant, je voudrais tout les cellules peuvent être toujours centrées. Ainsi, lorsque, par exemple, l'utilisateur passe de 1 à deux prix, je veux que le premier à se déplacer vers la gauche alors que la nouvelle apparaît dans
Ce que j'ai essayé.
J'ai essayé implémentant la méthode insetForSectionAt
de UICollectionView
, mais cela ne semble pas fonctionner. Je suppose que c'est parce que le CollectionView n'est pas un avec FlowLayout
. J'ai essayé le transformer en un, mais je fini par écraser tout ...
Le code:
Voici ce que j'ai mis en œuvre, au cas où l'article descend. (Condensé pour faciliter la lecture):
class CollectionViewLayout: UICollectionViewLayout {
//Invalidate the layout every time the bounds change so we can do the cool changes
override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool {
return true
}
override var collectionViewContentSize: CGSize {
return CGSize(width: self.itemSize * CGFloat(COLS),
height: self.itemSize * CGFloat(ROWS))
}
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
var attributes: [UICollectionViewLayoutAttributes] = []
for i in 0..<cellCount {
let indexPath = IndexPath(item: i, section: 0)
attributes.append(self.layoutAttributesForItem(at: indexPath)!)
}
return attributes
}
override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
var attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath)
// **Code where I create "z" variable by using equation in article, where "z" is just a value [0,1] that determines cell's scale**
// **More code where I Calculate "x" and "y" based on indexPath like in article**
//Set the cell's attributes:
attributes.transform = CGAffineTransform(scaleX: z, y: z)
attributes.size = CGSize(width: self.itemSize, height: self.itemSize)
attributes.center = CGPoint(x: x, y: y)
return attributes
}
}
Que diriez-vous que vous définissez la propriété '' UICollectionView's' isPagingEnabled' encore'on'? –
Je l'ai fait pour un autre de mes projets. Le problème est que la pagination se mette à des incréments de la largeur de l'écran, les cellules sont très petites et enclenchent verticalement et horizontalement – QuantumHoneybees
Si tel est le cas, alors cela pourrait aider https://stackoverflow.com/questions/42486960/uicollectionview- horizontal échange avec l'espace entre-pages –