Je dois surveiller de près l'échelle de la vue déroulante pour pouvoir mettre à jour les éléments de la vue de contenu (sous-vue gérant plusieurs CALayers) en fonction du zoom animé de la vue défilée.Dans iOS 4.0, pourquoi UIScrollView zoomToRect: animé: ne déclenche pas les délégués scrollViewDidScroll ou scrollViewDidZoom lors de l'animation?
Sur iOS 3.1, tout fonctionne comme prévu, j'utilise zoomToRect: animation: et scrollViewDidScroll: message du UIScrollViewDelegateest appelée à plusieurs reprises tandis que l'animation se déroule, me laisser mettre à jour les éléments de sous-vue selon le zoom réel.
Le même code sur iOS 4.0 n'exhibe pas le même comportement. Quand j'appelle zoomToRect: animé:, les délégués (scrollViewDidScroll: et scrollViewDidZoom) ne s'appelle une fois, ce qui rend mes éléments sous desinchronized jusqu'à ce que l'animation est terminée. En fait, les sous-éléments sautent immédiatement et sont ensuite rattrapés par l'animation zoom jusqu'à ce que tout soit à la bonne place. C'est comme si l'animation ne détectait pas les modifications sur les sous-vues CALayers.
J'ai essayé d'animer manuellement avec des blocs d'animation, mais la situation est la même, aucun appel de rappel progressif. J'ai aussi essayé le KVO, mais je ne vois pas comment j'utiliserais une animation gérée par UIScrollView.
Existe-t-il une solution de contournement sur iOS 4 qui me permettrait de pousser la valeur d'échelle à mes sous-vues comme l'échelle UIScrollView est animée?
J'ai essayé cette approche, mais le problème est que j'ai besoin d'accéder à la valeur actuelle du niveau zoom pendant que l'animation zoomming est exécutée, ce qui n'est pas disponible. – David
Pourriez-vous configurer une minuterie qui se déclenche plusieurs fois pendant que l'animation de zoom est en cours et y effectuer vos calculs? – Pablo