Je souhaite effectuer un changement de disposition lorsque les périphériques pivotent. Donc, je mets en œuvre la méthode - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
pour faire le travail. Mais je réalise quand cette méthode est appelée self.view.frame et self.view.bounds sont différents. Le self.view.bounds.size est correct et le self.view.frame.size ne semble toujours pas pivoter.pourquoi self.view.frame et self.view.bounds sont différents lorsque les périphériques tournent?
Par exemple, i new un projet vide SingleView et mettre en œuvre la méthode comme suit:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"willAnimateRotationToInterfaceOrientation");
NSLog(@"self.view.bounds.size width:%f height:%f ",self.view.bounds.size.width,self.view.bounds.size.height);
NSLog(@"self.view.frame.size width:%f height:%f",self.view.frame.size.width,self.view.frame.size.height);
}
lorsque le dispositif tourne du mode portrait au paysage. la sortie est la suivante:
2013-06-11 11:57:46.959 viewDemo[95658:707] willAnimateRotationToInterfaceOrientation
2013-06-11 11:57:46.961 viewDemo[95658:707] self.view.bounds.size width:1024.000000 height:748.000000
2013-06-11 11:57:46.961 viewDemo[95658:707] self.view.frame.size width:748.000000 height:1024.000000
Je me demande pourquoi ces tailles sont différentes? Ils ne devraient pas toujours être les mêmes? Et quand choisir lequel utiliser?
Toute aide sera appréciée.
Si vous regardez dans la documentation, il indique que si la transformation est autre chose que le transformation d'identité le paramètre frame ne doit pas être utilisé. Ajoutez des journaux pour la transformation de la vue pour voir à quoi ils ressemblent dans différentes rotations. – Abizern