Je souhaite mettre à jour manuellement le contentOffset
d'un UIScrollView
lors des changements de rotation. La vue de défilement remplit l'écran et a la largeur flexible et la taille flexible.contentOffset de UIScrollView pendant la rotation
J'essaie actuellement de mettre à jour le contentOffset dans willRotateToInterfaceOrientation
, comme ceci:
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[Utils logPoint:myScrollView.contentOffset tag:@"initial"];
myScrollView.contentOffset = CGPointMake(modifiedX, modifiedY);
[Utils logPoint:myScrollView.contentOffset tag:@"modified"];
}
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[Utils logPoint:myScrollView.contentOffset tag:@"final"];
}
Cependant, la valeur finale n'est pas la valeur modifiée, et il semble un peu être influencé par elle, mais ce n'est pas évident pour moi comment.
Ce sont quelques-uns des résultats que je reçois:
initial: (146.000000;-266.000000)
modified: (81.000000;-108.000000)
final: (59.000000;-0.000000)
initial: (146.000000;-266.000000)
modified: (500.000000;500.000000)
final: (59.000000;500.000000)
initial: (146.000000;-266.000000)
modified: (-500.000000;-500.000000)
final: (-0.000000;-0.000000)
Comment puis-je mettre à jour le contentOffset d'une vue de défilement lors d'un changement de rotation?
Est-ce que vous essayez de changer la contentOffset dans 'willAnimateRotationToInterfaceOrientation' à la place? Un bloc d'animation devrait être en place d'ici là, peut-être que le résultat est différent. – Pascal
@Pascal Oui, et ça marche bien. Je voudrais quand même savoir pourquoi il ne se comporte pas comme prévu si je le change dans willRotateToInterfaceOrientation. – hpique
Ma conjecture serait que le cadre du parent ne change que ** après ** 'willRotateToInterfaceOrientation', donc vous définissez un différent contentOffset, mais celui-là est immédiatement changé car l'image de la super-vue change seulement alors. Pour le système d'exploitation, c'est comme si vous aviez changé le cadre quelque temps plus tôt, pas en ce qui concerne la rotation en attente. – Pascal