https://github.com/chenfengxiaoxixi/cfpagescrollview
仿ios优酷视频主页分类页面滚动视图,实现了各种滑动切换动画。二级页面使用AVFoundation实现了一个简单流媒体视频播放器,包括,播放,暂停,滑动快进,横竖屏切换等功能。
https://github.com/chenfengxiaoxixi/cfpagescrollview
avfoundation scrollview-component segmentview swift
Last synced: 11 months ago
JSON representation
仿ios优酷视频主页分类页面滚动视图,实现了各种滑动切换动画。二级页面使用AVFoundation实现了一个简单流媒体视频播放器,包括,播放,暂停,滑动快进,横竖屏切换等功能。
- Host: GitHub
- URL: https://github.com/chenfengxiaoxixi/cfpagescrollview
- Owner: chenfengxiaoxixi
- License: mit
- Created: 2019-10-16T09:56:36.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-10T07:35:11.000Z (almost 6 years ago)
- Last Synced: 2025-04-03T22:01:45.458Z (12 months ago)
- Topics: avfoundation, scrollview-component, segmentview, swift
- Language: Swift
- Size: 4.07 MB
- Stars: 18
- Watchers: 2
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CFPageScrollView
仿ios优酷视频主页分类滚动页面视图,实现了滑动切换动画,渐变色,编辑分类页面等功能。二级页面使用AVFoundation实现了一个简单流媒体视频播放器,包括,播放,暂停,滑动快进,横竖屏切换等功能。
## 版本1.0.0
效果图:



使用:
```
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//CFPageScrollView()是个viewcontroller,每个页面是childController,便于解耦
pageView = CFPageScrollView()
pageView.dataSource = self
pageView.delegate = self
addChild(pageView)
pageView.didMove(toParent: self)
pageView.view.frame = CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: SCREEN_HEIGHT)
view.addSubview(pageView.view)
}
// MARK: - PageScrollViewDelegate
extension CFHomePageController: PageScrollViewDelegate {
//编辑完成时,这个代理会把数据传递出来
func editFinishWith(_ completionData: Array) {
if pageData == completionData as? Array {
print("相等时不作操作")
}
else
{
//数据改变时,需要重载显示页面,这里我用coredata模拟了一个存取数据的逻辑,如果是网络请求,这部分逻辑提交给后台处理,你只用上传数据,然后reload。
}
}
}
// MARK: - PageScrollviewViewDataSource
extension CFHomePageController: PageScrollViewDataSource {
//是否需要显示编辑菜单
func isDisplayMenu() -> Bool {
return true
}
//编辑菜单数组
func getMenuData() -> Array {
return menuDataSource
}
//编辑菜单分组title
func getMenuSectionTitle() -> Array {
return ["显示频道","未显示频道"]
}
//如果不要编辑菜单,以上三个协议不用实现
//分类滑动页面数据
func getScrollViewData() -> Array {
return pageData
}
//分类滑动页面颜色主题
func getNavHeaderThemeColorWith(_ index: Int) -> Dictionary {
return [backgroundColorKey: ThemeBlackColor, //顶部背景色
norTextColorKey: ThemeGrayWhiteColor, //字体和底部标记正常颜色
selTextColorKey: ThemeBlueColor] //字体和底部标记选中颜色
}
//分类滑动页面搜索栏,SearchView为动态创建,identifier为重用标识
func getSearchViewWith(_ index: Int) -> BaseSearchView {
let view: BaseSearchView = pageView.reuseSearchViewWith(classString: "SearchView", identifier: "view1") as! BaseSearchView
view.searchButtonTransitionAnimation(preWidth: preWidth)
view.searchButton.addTarget(self, action: #selector(displaySearchController), for: .touchUpInside)
preWidth = view.searchButton.mj_w
return view
}
}
```
具体细节需要参考工程里面的代码。