2010-11-04 29 views

Répondre

6

Non, pas avec des méthodes publiques. La durée est fixée à 0,3 seconde.

Il est une API non documentée privée, changer la durée:

@interface UIScrollView(UIScrollViewInternal) 
-(void)_setContentOffsetAnimationDuration:(NSTimeInterval)duration; 
@end 

mais comme toutes les API non documentée, en utilisant cela conduira à un rejet de l 'AppleStore.

+0

En fait, je prévois de distribution ad hoc, pourrait ne pas être un problème. Où puis-je trouver cette méthode définie? Merci! – Moshe

+0

@Moshe: Il doit être déclaré manuellement. Vous pouvez inclure la catégorie ci-dessus dans un fichier qui l'utilise. – kennytm

+0

En fait, je l'ai simplement appelé '[scrollView _setContentOffsetAnimationDuration: 8.0]' et cela a fonctionné. Notez juste que si vous utilisez avec NSTimer, comme moi, la durée de l'animation doit être plus grande que l'intervalle pour le timer, ou elle sera sautée. – Moshe

13

Réglez simplement l'argument de l'animation sur NO, puis effectuez votre propre animation en utilisant les méthodes de classe d'animation de UIView.

[UIView animateWithDuration:1.0f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^{ 
    [scrollView scrollRectToVisible:viewFrame animated:NO]; 
} completion:nil]; 
+3

Ceci cependant, n'appelle pas -scrollViewDidScroll: méthodes de délégué. – iamjustaprogrammer

+0

Vrai mais ce n'était pas une exigence de l'auteur de la question. – Camsoft