Ich arbeite an universellen iPhone/iPad-Anwendung mit universellen Storyboard. Bei einigen ViewControllern verwende ich Größenklassen, wenn sie ein bestimmtes Layout auf dem iPad haben.Falsche Größenklasse von UIViewController mit UIPopoverController
Ich habe einen ViewController, der modal auf dem iPhone präsentiert werden muss, aber auf dem iPad muss es in UIPopoverController angezeigt werden.
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:^{
}];
}
Es funktioniert ziemlich gut, aber es gibt Probleme mit Größenklassen. Ich habe einige Änderungen am Storyboard in der wRegular/hRegular Size Class vorgenommen, aber auf dem iPad in UIPopoverController habe ich immer noch das iPhone-Layout angezeigt. Es ist wegen der Größe des Popover ist niedriger als iPad-Bildschirm. Kann ich Änderungen im Interface Builder mit Größenklassen vornehmen, um sie im Popover auf dem iPad anzuzeigen, aber auf dem iPhone zu ignorieren?