ios - UIPageViewController 旋转怪异

标签 ios uipageviewcontroller

我已将 UIPageViewController 添加到我的应用程序中,作为应用程序的手册。当用户弹出它时,它会以纵向显示一页,以横向显示两页,书脊位于中间。由于我有大约 100 个页面,因此其上方有一个同级 View UICollectionView 页面选择器 View ,以允许快速跳转到页面。 UIPageViewController 和 UICollectionView 都位于包含它们的支持 View 上。

我在 UIPageViewController 中遇到的问题是,当 View 第一次旋转时,它们似乎将自己限制在原始布局的短尺寸上。因此,如果它首先以纵向显示,那么当旋转到横向时,两个页面的宽度与旧的纵向宽度相同。同样,如果它首先以两页横向显示,则旋转到纵向具有正确的宽度,但高度是初始横向高度的高度。这在任何设备上都是一致的。

当我创建内容 View 时,它们都是我想要的大小,但由于某种原因,它们似乎被 UIPageViewController 的某些组件转换,并且我不明白为什么它只执行两个维度之一以及为什么它问题始终是“空方”。

这是让我感觉有点疯狂的问题之一,如果不是一些微不足道的错误配置,我有什么想法可以调试它吗?

最佳答案

经过长时间的调试终于找到了。关键提示是在从纵向到横向旋转之前,将脊柱设置为 View 宽度的正确中间位置。解决方案是将 View 的框架重置为给定 willAnimateRotationToInterfaceOrientation 中方向的新尺寸。

在调用使用传递到方法中的持续时间的动画 block 之前,我计算新的大小,然后在 block 内我有:

  pageViewController.view.frame = newFrame;

当页面旋转时,包含内容页面的 View 将移动到正确的尺寸,书脊位置正确,内容填充给定区域。我想我遇到了这个问题,因为 View 的复杂性要求我接管如此多的默认值,但这个问题却悬而未决。

关于ios - UIPageViewController 旋转怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16028841/

相关文章:

ios - XCode 6 Storyboard - 如何为每个场景创建标题?

ios - 无法从乐观锁定失败中恢复

ios - 委托(delegate)返回不正确的 ViewController 实例号

SwiftUI:通过 PageViewController 呈现模式

ios - 在单独的类中实现 CLLocationManagerDelegate 时出现内存错误

ios - 守望者:Library/LaunchAgents/com.github.facebook.watchman.plist 用于写入:不是目录

objective-c - iOS 中自定义 UIStatusBar

iphone - iOS6 中的 UIPageViewController

ios - 找不到添加 UIBarButtonItem 的位置

ios - UICollectionView 与 UIPageViewController