gpt4 book ai didi

ios - UIPageViewController 结合安全区域

转载 作者:行者123 更新时间:2023-12-01 15:28:49 24 4
gpt4 key购买 nike

我无法像我期望的那样让 UIPageViewController 与 Safe Area 结合使用。

我正在做的是将 UIPageViewControllers subview Controller 的 subview (例如 childVc1 )固定到安全区域( childVc1.view.safeAreaLayoutGuide )。
这工作正常,直到我将方向从纵向切换到横向,滑动到下一个 subview Controller ,旋转回纵向并返回到上一个 subview Controller 。然后之前的 subview Controller 的 View 只有在滚动完成后才更新,这看起来很奇怪。

Here's a demo使用 Xcode 提供的基于页面的应用程序模板(修改为内容 View 固定到安全区域)。它没有最好的 fps,但应该很清楚,例如滚动完成后,月份名称会改变位置。

有人遇到过类似的问题并找到了如何正确解决这个问题的方法吗?

谢谢

最佳答案

我也刚碰到这个。似乎(至少从 iOS 13.5 开始)直到 pageViewController(_:didFinishAnimating:previousViewControllers:transitionCompleted:) 之后,safeAreaLayoutGuide 才会为屏幕外页面更新
我能够通过将以下内容添加到我的 UIPageViewController 子类来解决此问题,它的工作原理是通过“重置”可见 View Controller 强制页面 View Controller 在旋转后移除屏幕外页面。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)

coordinator.animate(alongsideTransition: nil) { (context) in
self.setViewControllers(self.viewControllers, direction: .forward, animated: false, completion: nil)
}
}

关于ios - UIPageViewController 结合安全区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47883195/

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