Изменение ориентации XCode показывает нежелательные между состояниями - PullRequest
1 голос
/ 10 ноября 2011

У меня очень странная проблема.Я добавил ориентацию в свое приложение для пейзажа и портрета без особых проблем, и это работает.Однако я заметил что-то странное.Когда я держу свой iPad в горизонтальном положении, то есть параллельно полу, вид в моем окне смещается так, как я не определял, и он выглядит не очень хорошо, естественно.Он переходит в промежуточное состояние, которого я не хочу (я не знаю, как объяснить это иначе).Кто-нибудь испытывал такую ​​же проблему?И каково решение этой проблемы?

Для информации: я использовал наблюдателя на изменение ориентации.Я думаю, что именно здесь возникла проблема:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];     

Я также использовал этот код, но у меня не было проблем с ним раньше:

-(void)willRotateToInterfaceOrientation: 
(UIInterfaceOrientation)toInterfaceOrientation 
                           duration:(NSTimeInterval)duration {

[super willRotateToInterfaceOrientation:toInterfaceOrientation  
                               duration:duration];

if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    self.view=landscapeView;
    self.view.transform=CGAffineTransformMakeRotation(deg2rad*(90));
    self.view.bounds=CGRectMake(0.0,0.0,1024.0,748.0);
} else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
    self.view=landscapeView;
    self.view.transform=CGAffineTransformMakeRotation(deg2rad*(-90));
    self.view.bounds=CGRectMake(0.0,0.0,1024.0,748.0);      
} else if (toInterfaceOrientation == UIInterfaceOrientationPortrait){
    self.view=portraitView;
    self.view.transform=CGAffineTransformMakeRotation(deg2rad*(0));
    self.view.bounds=CGRectMake(0.0,0.0,768.0,1004.0);
} else {
    self.view=portraitView;
    self.view.transform=CGAffineTransformMakeRotation(deg2rad*(180));
    self.view.bounds=CGRectMake(0.0,0.0,768.0,1004.0);
}
}

Спасибо!

...