Вам нужно использовать метод shouldAutorotateToInterfaceOrientation ..., но вам нужно сделать немного больше, прежде чем он будет работать должным образом. Прежде всего, вам понадобятся два файла XIB, один для альбомной ориентации и один для книжной ориентации. Затем вам нужно будет использовать вашу функцию следующим образом:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft){
//prepare for a Landscape view
}
else{
//prepare for a portrait view
}
return YES;
}
Что касается подготовки к пейзажному или портретному просмотру, может сработать использование авторазмера, но вам может потребоваться иметь полностью отдельные xibs. Я не смог найти способ изменить xib в активном контроллере представления, поэтому я бы предложил создать отдельный экземпляр вашего контроллера представления. Пример:
Когда вы представите свой первый экземпляр viewController, представьте его с портретным символом xib. Вам также может понадобиться логическое значение, чтобы отслеживать текущий XIB. Затем выполните этот код:
/*Assuming you are using a viewcontroller called viewController, and you have a boolean called xibPortrait.
You have presented this view controller using the portrait xib.
You also have a landscape xib, Landscape.xib
*/
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ((interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft) && xibPortrait){
xibPortrait = FALSE;
viewController *Land = [[ViewController alloc] initWithNibName:@"Landscape" bundle:nil];
[self presentModalViewController:Land animated:NO];
[Land release];
}
else if(!xibPortrait){
[self.parentViewController dismissModalViewControllerAnimated:NO];
xibPortrait = TRUE;
}
return YES;
}
//This should work but if you can, you should try to use Autoresizing.
EDIT:
Я также нашел это, что кто-то отправил на один из моих вопросов. Это может помочь вашему приложению работать более эффективно, чем при использовании моего метода выше:
http://aseriesoftubes.com/articles/ipad-development-101-orientation/