Animer le changement de cadre et de mise en page de UICollectionView
Je suis en train de créer un effet où j'ai modifié la mise en page de mon UICollectionView lors du changement de la taille de l'image
D'abord le collectionView mise en page présente une "miniature" de style de galerie en plein écran.
Après le redimensionnement de l'image à une mince bande - j'aimerais présenter une "bande de film" style de mise en page
les deux mises en page de façon indépendante, beau travail et comme prévu.
J'ai essayé un code similaire à ceci:
[UIView animateWithDuration:1
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.collectionview.frame = newFrame; //animate the frame size
}
completion:^(BOOL finished) {
[self.collectionView.collectionViewLayout invalidateLayout];
[self.collectionView setCollectionViewLayout:filmstriplayout animated:YES]; //now set the new layout
}];
Mais il est à la recherche très agitée et pas de redimensionnement comme prévu.
Est-il un moyen où je pouvais changer le collectionview mise en page et la taille de l'image en même temps lors de l'animation de la changer?
source d'informationauteur Avner Barr
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas de réponse précise, mais quelques suggestions à considérer.
UICollectionView
n'est pas toujours la poignée de changement de mode d'affichage des instances gracieusement. Voici un bon la discussion du problème et quelques solutions de contournement.Mais ce que j'ai fait, dans la pratique, cela a fonctionné pour moi a été de mettre en œuvre les deux mises en page dans une seule classe qui sait comment faire pour basculer entre les modes de disposition. J'ai trouvé que la commutation de modes de disposition dans un lot de mise à jour de bloc a été moins problématique que l'aide
setCollectionViewLayout
avec deux différentes occurrences de mise en page:D'abord définir la grille de taille de l'élément comme
gridItemSize = CGSizeMake(98, 98);
puis effectuer le lot d'action de UICollectionView. Les éléments en vue de collection de changer leur taille avec animation. 🙂Ici, c'est le truc simple à chaque fois que vous êtes à la mise à jour de la CollectionView utiliser ceci: