0

横向きのみをサポートする iPad アプリを開発しています。これらの 2 つの方法を使用して、新しい子ビュー コントローラーをコンテナー ビュー コントローラーに追加します。

- (void) assignFirstChildViewController:(UIViewController*)controller
{
    self.currentChildViewController = controller;
    [self addChildViewController:self.currentChildViewController];
    [self.currentChildViewController didMoveToParentViewController:self];
    [self.containerView addSubview:self.currentChildViewController.view];

}
- (void)assignNewChildController:(UIViewController *)childViewController
{
    id currentChildViewController = self.currentChildViewController;

    if(!currentChildViewController){
        [self assignFirstChildViewController:childViewController];
    }else{

        [self.currentChildViewController willMoveToParentViewController:nil];
        [self addChildViewController:childViewController];

        __weak __block PTSBaseContainerViewController *weakSelf=self;
        [self transitionFromViewController:self.currentChildViewController
                          toViewController:childViewController
                                  duration:1.0
                                   options:0
                                animations:^{
                                    [UIView transitionFromView:self.currentChildViewController.view toView:childViewController.view duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve completion:NULL];
                                }
                                completion:^(BOOL finished) {
                                    [weakSelf.currentChildViewController removeFromParentViewController];
                                    weakSelf.currentChildViewController = childViewController;
                                    [weakSelf.currentChildViewController didMoveToParentViewController:weakSelf];
                                }];


    }
}

問題は、子ビュー コントローラーのビューが縦向きで追加され、次の図に示すようにビューがめちゃくちゃになることです。

ここに画像の説明を入力

緑色のビューは、ご覧のように縦向きモードで追加された子ビュー コントローラーのビューです。黄色のビュー全体 (コンテナー ビューであり、灰色の上部バーの下にあるビュー コントローラーのフレーム全体を占める) を占有する代わりに、ポートレート モードで追加されており、その理由がわかりません。

PS: Appleのドキュメントに書かれているようにshouldAutomaticallyForwardRotationMethodsandを上書きしようとしましたが、結果はありませんでした。shouldAutomaticallyForwardAppearanceMethods

4

1 に答える 1

1

Apple のドキュメントでわかるように、子ビュー コントローラーのフレームを手動で設定する必要があります。

于 2013-10-02T11:33:26.533 に答える