2010-09-23 3 views
2

J'ai toutes mes sous-vues configurées pour qu'elles soient basées sur self.view.Sous-vues de redimensionnement automatique lors de la rotation de l'appareil

EG: UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,(self.view.frame.size.width-20),(self.view.frame.size.height-90))];

cependant lors de la rotation de vue (shouldRotateToDeviceOrientation ou autre) les vues restent tout de même taille. Comment puis-je les faire changer de forme pour s'adapter? Puis-je le faire automatiquement?

Merci

Répondre

2

Absolument. Jetez un oeil à la propriété autoresizingMask. Si vous définissez votre vue d'image, dans ce cas, pour avoir un masque autorésizing de UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight, puis lorsque sa vue parente est redimensionnée (comme cela peut être le cas lorsque votre application pivote, vous devrez peut-être définir un autoresizingMask similaire sur le parent vue), il conservera les marges extérieures que vous avez définies pour cela.

0

vous devez [view setAutoresizingMask:...]

1

Juste au cas où vous avez une vue dans le bas de la vue parent cela devrait aider:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; 

Lorsque l'auto est votre point de vue de l'enfant, qui devrait être redimensionnées. Si vous ne définissez pas UIViewAutoresizingFlexibleTopMargin, en mode horizontal, vous ne verrez pas votre vue, si elle était en bas en mode vertical.

Aussi, ne pas oublier de mettre:

self.autoresizesSubviews = YES; 

Et pour tous les modes Autoresizing vue des enfants dans votre vue. Alors que quand il est redimensionné, tout ce qu'il contient est également redimensionné.

Questions connexes