gpt4 book ai didi

ios - UIPageViewController:如何处理 View Controller 的不同方向?

转载 作者:行者123 更新时间:2023-11-29 12:04:29 24 4
gpt4 key购买 nike

我从 UIPageViewContoller 类继承了 3 个 View Controller 。其中两个应该只有纵向方向,一个 - 所有方向。我添加了这样一段代码:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return self.currentStackVC.supportedInterfaceOrientations()
}

override func shouldAutorotate() -> Bool {
return self.currentStackVC.shouldAutorotate()
}

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return self.currentStackVC.preferredInterfaceOrientationForPresentation()
}

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)

}

其中 currentStackVC 是当前可见的 View Controller 。我的 View Controller 中也有这样的代码,实现方式略有不同:

前两个 View Controller (下一个 - VC):

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}

override func shouldAutorotate() -> Bool {
return false
}
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.Portrait
}

最后:

override func shouldAutorotate() -> Bool {
return true
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.All
}

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.Portrait
}

当我位于第三个 View Controller 时 - 我旋转了我的设备并应用了新的方向。但不幸的是,它也申请了其他 VC。系统不会在第一个和第二个 VC 中询问 shouldAutorotate()。 (正如我所想,因为每次只询问当前的第三个 VC)。我转到第二个 VC(使用滑动),它也是横向的。所以,我的问题是 - 如何在 Page VC 中处理不同屏幕的不同方向?

提前致谢

最佳答案

你应该使用 UIPageViewController 的委托(delegate)方法

- (UIInterfaceOrientationMask)pageViewControllerSupportedInterfaceOrientations:(UIPageViewController *)pageViewController NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;

例如将此代码放入 UIPageViewController 的委托(delegate)中

- (UIInterfaceOrientationMask)pageViewControllerSupportedInterfaceOrientations:(UIPageViewController *)pageViewController {
return [[pageViewController.viewControllers lastObject] supportedInterfaceOrientations];
}

并覆盖子 VC 中的方法。

VC1

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAllButUpsideDown;
}

VC2

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}

关于ios - UIPageViewController:如何处理 View Controller 的不同方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35563242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com