Проблемы, начинающиеся в альбомной ориентации с IIViewDeckController как RootController на iPad
Если в качестве корневого контроллера окна AppDelegate я установлю контроллер видеодек, когда приложение запускается в альбомной ориентации на iPad, центральное представление отображается в его книжной ориентации и не изменяется в альбомной ориентации.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
IIViewDeckContoller *rootController = [IIViewDeckController new];
self.window.rootViewController = rootController;
self.window.backgroundColor = [UIColor blackColor];
[self.window makeKeyAndVisible];
}
Однако, если я создаю простой контроллер в качестве корневого контроллера, а затем представляю контроллер представления деки из этого корневого контроллера, то все выглядит нормально.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *simpleRootController = [UIViewController new];
IIViewDeckContoller *deckController = [IIViewDeckController new];
self.window.rootViewController = simpleRootController;
self.window.backgroundColor = [UIColor blackColor];
[self.window makeKeyAndVisible];
// View Deck Controller seems to have issues when it is the root controller of the main window.
// Presenting it as a modal seems to do the trick.
[simpleRootController presentViewController:self.deckController animated:NO completion:nil];
}
Кто-нибудь еще сталкивался с этой проблемой? Есть ли лучший способ решить эту проблему? Я не вижу такого же поведения с iPhone.
1 ответ
Я видел, как некоторые люди добились успеха с помощью следующего метода в IIViewDeckController:
- (CGRect) referenceBounds {
if (self.referenceView) {
return self.referenceView.bounds;
}
CGRect bounds = [[UIScreen mainScreen] bounds]; // portrait bounds
if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) {
bounds.size = CGSizeMake(bounds.size.height, bounds.size.width);
}
return bounds;
}
Тем не менее, я не вижу ничего изменить. Я не могу принять совет ОП по представлению контроллера представления из-за некоторых других ограничений.