Из того, что я могу сказать, метод setOrientation:
не работает (или, возможно, больше не работает). Вот что я делаю, чтобы сделать это:
сначала поместите это определение в верхнюю часть вашего файла, прямо под #imports:
#define degreesToRadian(x) (M_PI * (x) / 180.0)
затем, в методе viewWillAppear:
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}
если вы хотите, чтобы это было анимировано, тогда вы можете обернуть все это в блок анимации, например, так:
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}
[UIView commitAnimations];
Затем в контроллере портретного режима вы можете сделать обратное - проверить, находится ли он в настоящее время в альбомной ориентации, и, если да, повернуть его обратно в книжный режим.