Animation à l'intérieur d'un UIScrollView
Je veux fade-out d'un point de vue car il est le défilement à l'intérieur d'un parent UIScrollview. Lorsque le fade-out début de l'animation, le défilement de l'affichage cesse de défiler. Elle saute à la position correcte lorsque le transfert est terminé.
Mon fade-out est atteint avec animateWithDuration et de bloquer les objets, déclenché sur une page de changement que je détecte dans scrollViewWillBeginDragging.
Personne ne sait comment faire les deux arrivent en même temps? Juste pour être clair, je ne suis pas 'animation' le UIScrollView de défilement plutôt qu'il se passe via l'interaction de l'utilisateur de glisser.
EDIT:
Voici le code que j'utilise pour estomper les UIView. Ce code est dans un UIViewController classe dérivée, qui est le délégué d'une UIScrollView. Lorsque l'utilisateur commence à faire glisser son doigt, je veux de la fermeture de la sous-vue. Mais, lorsque l'utilisateur commence draggin un doigt, la sous-vue s'éteint et que le défilement s'arrête. Après la sous-vue a complètement disparu, le défilement de la vue s'alignent puis à l'endroit où le doigt de l'utilisateur est.
-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView
{
[UIView animateWithDuration:0.5
animations:^
{
self.subView.alpha = 0.0f;
}
completion:^(BOOL finished) { }];
}
OriginalL'auteur OpenUserX03 | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
très intéressant ... j'ai vérifié, et oui, j'ai le même effet ... eh Bien, il semble que le animateWithDuration en quelque sorte bloque le thread principal ... ce qui n'est pas logique, et la documentation ne dit rien non plus ..
Cependant, il est très facile de solution de contournement, quelque chose de semblable à ceci: (j'ai mis de l'animation de la durée à 3 donc je peux voir que ça fonctionne alors que je suis un déplacement de mon de défilement de la vue 🙂 ...)
eh bien .. je ne sais pas pourquoi (encore), mais j'ai testé, et je peux confirmer que ça marche comme ça ...
Très intéressante. 🙂
essayez peut-être la plus complète du bloc de l'animation de la méthode animate:délai:options:achèvement: et envoyer de l'option UIViewAnimationAllowUserInteraction
À l'aide de la non-bloc fonction UIView animations aussi résolu le problème inverse pour moi (le défilement de la vue était à l'origine de bloc fonction UIView animations à feu à des moments étranges/pas du tout). (iOS 6.1)
OriginalL'auteur Moszi
Un peu tard, mais si vous voulez maintenir à l'aide de blocs, vous pouvez utiliser:
animateWithDuration:délai:options:animation:complet:
ajouter "UIViewAnimationOptionAllowUserInteraction" d'options pour permettre l'interaction pendant le défilement.
Je suis sûr que vous aurez toujours le gal problème. Voici la meilleure façon dont je peux l'expliquer. S'il vous plaît pardonnez-moi d'avance depuis que je suis probablement en utilisant le mauvais termes. Toutes les animations doivent s'exécuter sur le thread principal. Lorsque vous appelez une animation, iOS premier *P*rocesses puis il *R*enders avant qu'il génère *F*rames. Il ressemble à ceci.
PPPPRRRRFFFFFFFFFFFFFFFFFF
Mais depuis ScrollViews ne sais pas combien de temps votre animation va être ou quand elle prendra fin, il doit effectuer l'animation de ce genre.
PRFPRFPRFPRFPRFPRFPRFPRF
Ma théorie est que le décalage que vous rencontrez a à faire avec ces deux appels en collision sur le thread principal en même temps. Je ne suis pas sûr de savoir comment vous permettrait de résoudre ce problème autrement qu'avec une puce plus rapide. J'ai que de pousser une animation pour le CPU et un pour le GPU, mais je ne suis pas avancé en programmation encore.
OriginalL'auteur David Chu
Dirais-je, car l'opacité est basé sur le doigt de l'utilisateur de mouvements dans le UIScrollView, à l'aide de la méthode du délégué scrollViewDidScroll:. La scrollView passé en tant que paramètre peut être utilisé pour vérifier l'contentOffset qui est tout simplement un CGPoint indiquant dans quelle mesure dans l'affichage du contenu de la UIScrollView l'utilisateur dispose d'un défilement. Quelque chose comme ceci peut être utilisé pour relier la position de défilement à l'opacité d'une vue donnée dans un paginé UIScrollView:
parfait logicak solution, j'ai converti pour verticall score grâce mate
OriginalL'auteur Jacob
Selon des informations qui n'est pas encore censé être largement publié, tous les iOS 4.x versions de bloquer complètement l'interaction de l'utilisateur alors que l'animation est en cours.
N'est-il pas intéressant de noter, cependant, que vous êtes UITouches sont évidemment toujours enregistré au cours de l'animation? Hmm... peut-être que les indices que quelque chose de NOUVEAU est à venir dans encore-à-être-publié version!
I. e., Si vous le pouvez, lisez l'iOS 5 Bêta de la documentation sur les méthodes de la classe UIView.
OriginalL'auteur mbm29414