Проблемы, начинающиеся в альбомной ориентации с 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;
}

Тем не менее, я не вижу ничего изменить. Я не могу принять совет ОП по представлению контроллера представления из-за некоторых других ограничений.

Другие вопросы по тегам