iOS PageViewController底部出现额外空白问题求解
修复方案
按优先级尝试以下操作即可解决多余空白问题:
关闭安全区内边距自动适配
系统默认会给滚动类视图自动适配安全区添加内边距,初始化UIPageViewController后添加以下代码关闭该特性:// 关闭pageViewController视图的安全区自动适配 pageViewController.view.insetsLayoutMarginsFromSafeArea = false // 适配内部滚动视图的内边距设置 if #available(iOS 11.0, *) { pageViewController.view.subviews.compactMap { $0 as? UIScrollView }.forEach { $0.contentInsetAdjustmentBehavior = .never } } else { automaticallyAdjustsScrollViewInsets = false }校验容器视图
articleContentView的自身约束
你现有代码仅保证了pageView完全铺满articleContentView,需要额外确认容器本身的约束符合预期:articleContentView顶部是否约束到父视图顶部/导航栏底部articleContentView底部是否严格约束到底部视图的顶部,约束常量是否为0,没有误加正数值
可以直接用Xcode的「Debug View Hierarchy」视图调试工具,查看articleContentView的实际frame,确认是不是容器本身就存在多余底部空白。
补全子控制器生命周期调用
把UIPageViewController作为子控制器添加时,必须调用完整的容器控制器方法,缺失会导致布局计算异常:addChild(pageViewController) articleContentView.addSubview(pageViewController.view) // 你原有添加约束的代码放在此处 pageViewController.didMove(toParent: self)检查PageVC子控制器的视图布局
确认UIPageViewController数据源返回的所有子控制器,自身视图不存在多余的顶部/底部内边距,也可给子控制器的视图添加insetsLayoutMarginsFromSafeArea = false关闭安全区适配。

内容的提问来源于stack exchange,提问作者Jay Vyas
相关产品推荐
相关产品推荐

