横向きのみをサポートする 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のドキュメントに書かれているようにshouldAutomaticallyForwardRotationMethods
andを上書きしようとしましたが、結果はありませんでした。shouldAutomaticallyForwardAppearanceMethods