Я пытаюсь изменить вид на поворот, потому что мой вид должен значительно отличаться от портрета до пейзажа.Теперь код, который я использую, работает один раз, после чего приложение зависает при попытке повернуть назад.Любое направление не имеет значения.Например: если я нахожусь в альбомной ориентации и поворачиваюсь в портретную, все работает отлично, пока я не поворачиваюсь обратно в альбомную, тогда он зависает и абсолютно ничего не делает.
Вот код, который я использую для достижения этого
В моем методе "viewDidLoad"
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
Затем я вызываю его для вращения:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}
- (void)didRotate:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if ((orientation == UIDeviceOrientationLandscapeLeft) ||
(orientation == UIDeviceOrientationLandscapeLeft))
{
// present the other viewController, it's only viewable in landscape
[self.view addSubview:landScapeView];
}
if ((orientation == UIDeviceOrientationLandscapeRight) ||
(orientation == UIDeviceOrientationLandscapeRight))
{
// present the other viewController, it's only viewable in landscape
[self.view addSubview:landScapeView];
}
else if ((orientation == UIDeviceOrientationPortrait ||
(orientation == UIDeviceOrientationPortrait))
{
// get rid of the landscape controller
[self.view addSubview:portrait];
}
else if ((orientation == UIDeviceOrientationPortraitUpsideDown ||
(orientation == UIDeviceOrientationPortraitUpsideDown))
{
// get rid of the landscape controller
[self.view addSubview:portrait];
}
}