子を持つプログラムでビューコントローラを設定しましたUIPageViewController
。これには、プログラムによっても設定されているさまざまな他のView Controllerが表示されます。これらのビューコントローラのビューはtranslatesAutoresizingMaskIntoConstraints
がYES
に設定されていますが、ページビューコントローラのビューは制約を使用してトップビューコントローラに位置します。UIPageViewControllerは子ビューコントローラのサイズを変更しません
問題は、ユーザーがデバイスを回転させると、ページビューコントローラーはフレームのサイズを変更しますが、子ビューコントローラーは変更しないということです。 didRotateFromInterfaceOrientation
によって、そのフレームはまだ古い方向からのものです。子ビューコントローラで回転メソッドが呼び出されたことを確認しましたが、フレームは変更されません。私はこのようなページビューコントローラの設定
:
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageViewController.view.backgroundColor = [UIColor clearColor];
self.pageViewController.view.translatesAutoresizingMaskIntoConstraints = NO;
self.pageViewController.dataSource = self;
self.pageViewController.delegate = self;
[self.pageViewController willMoveToParentViewController:self];
[self.view addSubview:self.pageViewController.view];
[self addChildViewController:self.pageViewController];
[self.pageViewController didMoveToParentViewController:self];
self.currentPageIndex = 0;
self.currentPageController = [self pageForIndex:self.currentPageIndex];
self.currentPageController.delegate = self;
[self.pageViewController setViewControllers:@[self.currentPageController] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
を私はsetNeedsLayout
を呼び出して試してみたが、それは不器用な回転アニメーションだと私はスワイプ次ページも適切にリサイズされていません。
なぜページビューコントローラは子ビューコントローラのサイズを変更しないのですか?これを行うにはどうすればよいですか?
ありがとうございます!
問題の解決方法をお探しですか?私は同じ問題で立ち往生しています。 – AlexR
問題は、子コントローラの-didRotateFromInterfaceOrientationが決して呼び出されないことです。親ビューコントローラ-didRotateFromInterfaceOrientationから手動で呼び出して解決しました。 –
クリイル・ビュー・コントローラーの方法は何ですか?あなたは方向変更を処理するために呼び出していますか? – Satyam