在 ScrollView 中嵌入 PageViewController - 以编程方式 Swift 5
Embed PageViewController in ScrollView - Programmatically Swift 5
我有一个页面ViewController,它水平显示了 4 个四视图控制器,
我可以将所有这些 viewController 嵌入到一个 UIScrollView 中吗?管理一些任务会更容易。
直到现在我尝试在 PageViewController 中执行此操作,使 PageViewController 符合 UIScrollViewDelegate:
for view in self.view.subviews {
if let subView = view as? UIScrollView {
subView.delegate = self
subView.isScrollEnabled = true
subView.bouncesZoom = false
}
}
但它实际上识别单个 ViewController 的滚动,而不是四个 VC 的整个堆栈。
我想让 ScrollView 的 contentSize 等于所有 viewController 的整个宽度。
您无法将 a UIPageViewController
更改为滚动视图。它已经是一个滚动视图,但是有很多通过视图控制器进行内存管理分页的内置功能。
如果您的目标是将 4 个视图控制器放入滚动视图中:
- 创建一个新的(普通)
UIViewController
- 添加一个
UIScrollView
并将其约束到所有 4 个边
- 在滚动视图中添加一个
UIStackView
(分布:均匀填充)
- 将堆栈视图的所有 4 个边都约束到滚动视图的内容布局指南
- 将其高度限制为滚动视图的框架布局指南高度
- 向堆栈视图添加 4
UIContainerView
s
- 将 4 个 "page" 视图控制器分别嵌入到 4 个容器中
- 将第一个容器的宽度限制为滚动视图框架布局指南的宽度
您现在拥有全视图 UIScrollView
,您可以在其中来回滚动 4 个 "page" 视图控制器。
我有一个页面ViewController,它水平显示了 4 个四视图控制器,
我可以将所有这些 viewController 嵌入到一个 UIScrollView 中吗?管理一些任务会更容易。
直到现在我尝试在 PageViewController 中执行此操作,使 PageViewController 符合 UIScrollViewDelegate:
for view in self.view.subviews {
if let subView = view as? UIScrollView {
subView.delegate = self
subView.isScrollEnabled = true
subView.bouncesZoom = false
}
}
但它实际上识别单个 ViewController 的滚动,而不是四个 VC 的整个堆栈。 我想让 ScrollView 的 contentSize 等于所有 viewController 的整个宽度。
您无法将 a UIPageViewController
更改为滚动视图。它已经是一个滚动视图,但是有很多通过视图控制器进行内存管理分页的内置功能。
如果您的目标是将 4 个视图控制器放入滚动视图中:
- 创建一个新的(普通)
UIViewController
- 添加一个
UIScrollView
并将其约束到所有 4 个边 - 在滚动视图中添加一个
UIStackView
(分布:均匀填充) - 将堆栈视图的所有 4 个边都约束到滚动视图的内容布局指南
- 将其高度限制为滚动视图的框架布局指南高度
- 向堆栈视图添加 4
UIContainerView
s - 将 4 个 "page" 视图控制器分别嵌入到 4 个容器中
- 将第一个容器的宽度限制为滚动视图框架布局指南的宽度
您现在拥有全视图 UIScrollView
,您可以在其中来回滚动 4 个 "page" 视图控制器。