J'ai un scrollview avec pagination. Dans viewDidLoad, je vérifie si l'orientation actuelle est paysage, puis je fixe la hauteur de son contentsize à 440.
if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
{
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages,340)];
}
else if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation]))
{
[scroll setFrame:CGRectMake(0,0,480,480)];
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 440)];
}
tout fonctionne bien, le scrollview défile de manière fluide et il n'y a pas de défilement diagonal.
mais quand l'orientation change,
Je dois à nouveau définir le cadre et la taille du contenu du scrollview et je les définis comme suit
-(void)orientationChanged:(id)object
{
if(UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
{
self.scroll.frame = [[UIScreen mainScreen]bounds];
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 340)];
}
else
{
self.scroll.frame = CGRectMake(0,0,480,480);
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 600)];
}
}
Je ne comprends pas pourquoi je dois régler la hauteur de la taille du contenu jusqu'à 600 en mode paysage, et cela ne suffit pas non plus. Et cela ajoute un problème supplémentaire : le scrollview commence à défiler en diagonale, ce que je ne veux pas car cela semble bizarre. Quelqu'un peut-il m'aider à comprendre où et ce qui me manque ?
J'ai défini le masque de redimensionnement automatique du scrollview en tant que
[scroll setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleHeight];
mais le changer n'aide pas.