我在项目中的一个也有类似的布局。我用SJSegmentedViewController。
它需要一个headerViewController,中间段的数据源和这些段的viewController数组。
此库允许您从屏幕上的任意位置进行滚动,此外,当用户一直滚动到顶部时,分段控件会粘到顶部。
这里是你如何实现这一点:
首先导入模块到类
import SJSegmentedScrollView
然后创建一个headerViewController和两个viewControllers(说视频和技巧)的段
let headerViewController = HeaderViewController()
let video = VideoController()
let tips = TipsController()
之后,设置这些控制器,并设置分段控制的标题如下:
segmentController.headerViewController = header
segmentController.segmentControllers = [video,tips]
video.title = "Video"
tips.title = "Tips"
然后将其添加到容器视图
addChildViewController(segmentController)
containerView.addSubview(segmentController.view)
segmentController.view.frame = self.containerView.bounds
segmentController.didMove(toParentViewController: self)
这里容器视图是一个UIContainerView
最后,但要确保在儿童控制器(视频控制器,TipsController)调用,调用该函数后在这些控制器中,您可以从屏幕上的任何位置滚动。
extension HomeListingViewController: SJSegmentedViewControllerViewSource {
func viewForSegmentControllerToObserveContentOffsetChange() -> UIView {
//Scrollview in child controllers
return scrollview
}
}
你可以找到完整的文档here
希望这有助于!