如何将UIPageViewController添加到UIScrollView内嵌UIStackView并解决空白问题
问题原因
UIPageViewController 初始化后未设置初始显示的控制器,虽然已经配置了数据源和高度约束,但没有指定默认加载的页面,所以对应位置只有空白占位。
另外你初始化 UIPageViewController 时没有显式指定转场样式和导航方向,也可能因为默认值异常导致显示问题。
修复方案
- 显式指定 UIPageViewController 的初始化参数
- 调用
setViewControllers方法设置初始显示页
修改对应代码段即可:
// 把原来的 pageViewController = UIPageViewController() 替换成这行,指定滚动样式和水平方向 pageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal) pageViewController.dataSource = self pageViewController.view.translatesAutoresizingMaskIntoConstraints = false pageViewController.view.heightAnchor.constraint(equalToConstant: 200).isActive = true // 新增这行,设置初始显示第一个控制器 pageViewController.setViewControllers([controllers.first!], direction: .forward, animated: false, completion: nil) addChild(pageViewController) contentView.addArrangedSubview(pageViewController.view) pageViewController.didMove(toParent: self)
修改完成后运行即可看到200高度区域正常显示黑色的第一个页面,左右滑动可切换其他控制器页面。
内容的提问来源于stack exchange,提问作者Ariel Malka
相关产品推荐
相关产品推荐

