UIPageViewController语言 - 动画过渡到下一个视图控制器与方向更改混合在一起



我正在开发一个使用UIPageViewController的应用程序。在UIPageViewController子类中,我像这样设置下一个视图控制器:

guard let currentViewController = self.viewControllers?.first else { return }
guard let nextViewController = dataSource?.pageViewController(self, viewControllerAfter: currentViewController) else { return }
self.setViewControllers([nextViewController], direction: .forward, animated: true, completion: { (finished) in         
            // some finishing work
})

该应用程序支持纵向和横向。到下一个视图控制器的过渡将以动画形式显示。当该动画开始时,如果在此之后开始方向更改,则在两个动画结束时将有两个部分可见的视图控制器,而不仅仅是下一个。

我猜它在过渡到下一个视图控制器开始之前计算偏移量,然后使用此偏移量开始动画,然后旋转视图并调整视图大小,但不重新计算偏移量。或类似的东西。有没有人知道如何修复或解决此问题。

我只对此进行了快速的初步测试,但它可能会为您完成这项工作。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    if let currentViewController = self.viewControllers?.first {
        coordinator.animate(alongsideTransition: { _ in
            // nothing here
        }) { [unowned self] _ in
            self.setViewControllers([currentViewController], direction: .forward, animated: false, completion: { (finished) in
                // some finishing work
            })
        }
    }
    super.viewWillTransition(to: size, with: coordinator)
}

根据"一些整理工作">需要什么,它可能会变得有点棘手......可能需要测试finished状态。

最新更新