2015-01-19 2 views
6

Я работаю над универсальным приложением iPhone/iPad с универсальной раскадровкой. Для некоторых ViewControllers я использую классы размера, если у них есть определенный макет на iPad.Неверный размер-класс UIViewController, показанный с UIPopoverController

У меня есть один ViewController, который должен быть представлен на iPhone, но на iPad он должен отображаться в UIPopoverController.

UINavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"ComposeMessageNavigationController"]; 
ComposeMessageViewController *viewController = (ComposeMessageViewController *)navigationController.topViewController; 
//Prepeare my view controlller 
... 

if (IS_IPAD) { 
    UIPopoverController * popover = [[UIPopoverController alloc] initWithContentViewController:navigationController]; 
    CGSize screenSize = [UIScreen mainScreen].bounds.size; 
    CGRect popoverFrame = CGRectMake(screenSize.width/2, screenSize.height/2, 1, 1); 
    [popover presentPopoverFromRect:popoverFrame inView:self.view permittedArrowDirections:0 animated:YES]; 
} else { 
    [self presentViewController:navigationController animated:YES completion:^{ 
    }]; 
} 

Это работает очень хорошо, но есть проблемы с классами размеров. Я внес некоторые изменения в раскадровку в классе wRegular/hRegular Size, но на iPad в UIPopoverController все еще отображается макет iPhone. Это из-за размера popover ниже, чем iPad. Могу ли я внести изменения в Interface Builder с классами размера, чтобы показать их в popover на iPad, но игнорировать на iPhone?

ответ

0

Использование setOverrideTraitCollection на контроллере просмотра popover должно позволить вам использовать обычный x обычный для iPad.

Смежные вопросы