Cela me laisse perplexe. Je veux changer le cadre d'un UIScrollView lors du changement d'orientation:Pourquoi la modification du cadre d'un UIScrollView modifie-t-il les cadres de ses sous-vues?
if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight){
self.myScrollView.frame = CGRectMake(40, 40, 984, 200);
for (UIView* view in [self.myScrollView subviews]){
NSLog(@"subview x: %f", view.frame.origin.x);
}
}
else{
self.myScrollView.frame = CGRectMake(40, 40, 728, 200);
for (UIView* view in [self.myScrollView subviews]){
NSLog(@"subview x portrait: %f", view.frame.origin.x);
}
}
Voici les résultats. Notez que les sous-vues sont tous déplacés 156 pixels vers la gauche, même si tout ce que je ne faisais que changer la largeur de la vue de défilement parent (256 px plus petit en mode portrait):
subview x: 0.000000
subview x: 128.000000
subview x: 256.000000
subview x: 384.000000
subview x portrait: -156.000000
subview x portrait: -28.000000
subview x portrait: 100.000000
subview x portrait: 228.000000
Pourquoi ?? Et comment puis-je empêcher cela?
myScrollView.autoresizesSubviews = NO; fait le tour. Merci. – sol
aucun prob. Il y a aussi une case à cocher pour le désactiver dans le constructeur de l'interface – Nimrod
+1 Excellent, j'avais un problème de sous-vues qui changeait mystérieusement quand un cadre de vue parents changeait, ça me rendait fou, éteindre autoresizesSubviews l'a corrigé, merci! – Bogatyr