作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从 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/
我是一名优秀的程序员,十分优秀!