2010-04-15 7 views
4

Comment ajouter un peu de glisser à la physique UIScrollView. Il défile juste un peu trop vite pour ce que je fais. (Je ne veux pas désactiver tout à fait, j'aime toujours l'effet élastique quand vous arrivez à la fin ou au début de la vue.) Y a-t-il un moyen de ralentir?iPhone UIScrollView, ralentir le défilement

Répondre

0

Ce n'est simplement pas possible pour le moment. Peut-être que Apple va un jour étendre l'API pour le permettre, mais jusqu'à ce jour, vous êtes coincé avec la vitesse par défaut.

La seule autre option serait votre propre implémentation de défilement. Ce n'est pas trivial si vous voulez tout le bon poli comme l'effet élastique et la façon dont le défilement se verrouille horizontalement ou verticalement. Sans oublier de feuilleter pour faire défiler. En outre, Apple a un brevet pour certains de ces comportements de défilement, donc l'écriture de votre propre pourrait même être dangereux. Source: "Apple's touch-screen patent".

Un dispositif informatique, comprenant: un écran tactile; un ou plusieurs processeurs; Mémoire; et un ou plusieurs programmes, dans lesquels le ou les programmes sont stockés dans la mémoire et configurés pour être exécutés par le ou les processeurs, le ou les programmes comprenant: des instructions pour détecter un ou plusieurs contacts de doigt avec l'écran tactile; des instructions pour appliquer une ou plusieurs heuristiques aux un ou plusieurs contacts de doigt pour déterminer une commande pour le dispositif; et des instructions pour le traitement de la commande; dans lequel la ou les heuristiques comprennent: une heuristique verticale de défilement d'écran pour déterminer que le ou les contacts de doigts correspondent à une commande de défilement vertical d'écran unidimensionnel plutôt qu'à une commande de traduction d'écran bidimensionnelle basée sur un angle de mouvement initial de un contact du doigt par rapport à l'affichage de l'écran tactile; une heuristique de traduction d'écran bidimensionnelle pour déterminer que le ou les contacts de doigts correspondent à la commande de traduction d'écran bidimensionnelle plutôt qu'à la commande de défilement vertical d'écran unidimensionnel sur la base de l'angle de mouvement initial du contact de doigt par rapport au écran tactile; et une heuristique d'élément suivant pour déterminer que le ou les contacts de doigt correspondent à une commande pour passer de l'affichage d'un élément respectif dans un ensemble d'éléments à l'affichage d'un élément suivant dans l'ensemble d'éléments.

Mais bien sûr, je ne suis pas avocat.

+0

Je pense que cette réponse est un peu désuète .. – Jasper

19

En fait, après avoir lu la documentation que je découvre la propriété pour UIScrollView qui ralentit le défilement, si Apple ne se présente facilement disponible pour tous ceux qui cherchent ailleurs pour cela:

scrollView.decelerationRate = UIScrollViewDecelerationRateFast; 

Même si elle dit rapide, il accélère la décélération, ce qui ralentit le défilement. C'était exactement ce dont j'avais besoin. Et pas de soucis de brevets. :)

3

En fait, vous pouvez faire une animation de bloc avec ScrollToRowAtIndexPath: ... avec un jeu animé à NO. De cette façon, l'animation du bloc animera les sous-couches manuellement en utilisant l'heure sélectionnée.

1

Comme UICollectionView est la sous-classe de UIScrollView Vous pouvez utiliser la méthode de délégué Scroll View.

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { 
    targetContentOffset->x = (targetContentOffset->x - scrollView.contentOffset.x)/6 + scrollView.contentOffset.x; 
    targetContentOffset->y = (targetContentOffset->y - scrollView.contentOffset.y)/6 + scrollView.contentOffset.y; 
} 
Questions connexes