Comment avez-vous par programmation force a faites défiler à l'aide de UIScrollView?
J'ai un horizontale UIScrollview mis en place (ce qui signifie que son pas un qui défile en haut et en bas, mais celui qui ne défile de gauche à droite) et sur l'application de lancement, je veux que ce scrollview lui-même pour faire défiler à gauche, puis à droite - type de "démontrer" sa capacité à faire défiler et, enfin, puis s'arrêter, de laisser l'utilisateur se prennent alors le relais et de contrôle de la faire défiler manuellement avec leur doigt.
Tout fonctionne - sauf pour le chargement de gauche à droite démo de défilement.
Je ne suis pas en utilisant l'Interface Builder pour tout cela, je suis en train de faire tout avec le code:
//(this is in viewDidLoad:)
//Create the scrollView:
UIScrollView *photosScroll = [[UIScrollView alloc] initWithFrame: CGRectMake(0, 0, 320, 200)];
[photosScroll setContentSize: CGSizeMake(1240, 200)];
//Add it as a subview to the mainView
[mainView addSubview:photosScroll];
//Set the photoScroll's delegate:
photosScroll.delegate = self;
//Create a frame to which to scroll:
CGRect frame = CGRectMake(10, 10, 80, 150);
//Scroll to that frame:
[photosScroll scrollRectToVisible: frame animated:YES];
De sorte que le scrollView charge correctement, et je suis capable de la faire défiler à gauche et à droite avec mon doigt, mais il ne fait pas cela "défilement automatique" comme je l'espérais que ce serait.
- J'ai essayé d'appeler le scrollRectToVisible avant et après l'ajout de l'
le scrollView comme une sous-vue - n'a pas fonctionné. - Pensant peut-être que cela devrait
arriver dans loadView et pas dans le viewDidLoad? Mais si oui, comment?
Des idées?
Vous devez vous connecter pour publier un commentaire.
Un couple de façons de le faire:
scrollRectToVisible:animation:
pour un zéro valeur de X, puis une largeish positive, puis revenez à votre point milieu. Vous pouvez appeler la méthode après le défilement de l'affichage est ajouté une sous-vue (et sans doute avant aussi, mais le mieux être sûr). Vous aurez besoin de calculer la valeur de X est hors de l'écran vers la gauche à l'aide de votrecontentSize
et de connaissances sur la façon dont l'échelle de vos différents éléments à l'intérieur de défilement de la vue.setContentOffset:animation:
de force le contenu de la scrollview à déplacer par rapport à votre position de la vue. Déplacer les éléments à droite et une à gauche de défilement (X positif de la valeur), puis deux fois à gauche aussi loin pour un défilement de droite (X négatif de la valeur), puis réglez le décalage de zéro.Vous ne devez pas mettre ces
viewDidLoad
ouloadView
; les mettre dansviewDidAppear
, ce qui est après votre scrollview est dessinée à l'écran. Vous ne se soucient que des animations lorsque l'utilisateur peut les voir!frame
vous faites défiler jusqu'à la taille de la vue d'ensemble. Vous pouvez faireCGRectMake(800, 0, 1, 1)
si vous le souhaitez, puisCGRectMake(0, 0, 1, 1)
. Pour faire défiler la zone de 800 pixels 1600 pixels dans l'affichage, vous pouvez faire défiler à(1599, 0, 1, 1)
, et puis pour faire défiler la zone de 0 à 800 de retour dans l'affichage, vous pouvez faire défiler à(0, 0, 1, 1)
.@property (nonatomic) UIScrollView *scrollView;
dans votre contrôleur de classe (n'oubliez pas de@synthesize scrollView;
dans votre .m de fichier), et dansviewDidLoad
ensembleself.scrollView
à l'init avais vue. Ensuite, vous pouvez référencerscrollView
deviewDidAppear
🙂@synthesize
'dphotoScroll
, et a appeléscrollRectToVisible:animated:
dansviewDidAppear
, c' devrait de travail. Que vous ayez entré un rect qui est déjà visible sur l'écran de votre point de départ la position de défilement. Essayez des valeurs extrêmes - à l'autre extrémité de la vue - et de voir ce qui s'y passe.