9
votes

Comment puis-je désactiver les animations dans un nscollectionview

Je voudrais désactiver les animations «shuffle» qui se produisent lorsque vous redimensionnez un NSCollectionview. Est-ce possible?


1 commentaires

Des progrès sur celui-ci? Avoir le même problème et ne pas vouloir des API privées.


5 Réponses :


2
votes

Pour 10.6, j'ai pu désactiver l'animation par sous-classement Nsview, primordial AnimationForkey: et retourner nul. Ensuite, assurez-vous d'utiliser cette vue pour la vue du prototype.


4 commentaires

L'animationForkey n'est-elle pas sur Calayer, pas Nsview?


Cela fait partie du protocole NSANIMATABLEPROPERTYPONTINAINER que Nsview se conforme.


AnimationForkey ne s'appelle pas de la sous-classe de classe de Nscollectionview.


Je n'ai pas pu obtenir cette technique pour travailler non plus, donc une explication plus longue ou un échantillon serait utile. Pour l'instant, je change de l'ivar privé comme suggéré par Padraig.



5
votes

Ceci fonctionne, mais il définit une variable d'instance privée afin qu'il puisse être correct dans le Mac App Store.

[collectionView setValue:@(0) forKey:@"_animationDuration"];


0 commentaires

3
votes

Kainjow est correct. Ajout de ceci: xxx

à la sous-classe de la vue prototype (pas la vue de la collection!) désactive les animations


0 commentaires

0
votes

Je n'ai pu obtenir que cela pour travailler si je faisais ce qui suit:

1) Sous-classe la vue que le NSCollectionViewItem est utilisé comme sa vue. Cette vue sous-classée nécessitait une calayeuse et j'ai défini la sous-classe de vue comme le délégué de la Calayer.

2) Implémentez la méthode de la déléguée Calayer afin qu'aucune action d'animation ne devrait se produire: xxx

3) Enfin, dans la méthode de la source de données NSCollectionView: xxx


0 commentaires

2
votes

Pour désactiver toutes les animations de la vue de la collection à Swift, faites-le juste avant que quelque chose d'animatable se produise:

NSAnimationContext.current.duration = 0


1 commentaires

solution génie