2

ビュー デッキ コントローラーを 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 では同じ動作は見られません。

4

1 に答える 1

0

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;
}

しかし、私は何も変わっていません。他の制限があるため、ビューコントローラーを提示するというOPのアドバイスを受け入れることができません。

于 2014-05-30T22:16:47.380 に答える