bannerView
好久不写文章了,前一段时间遇到要播放视频的banner,也没有找到合适的插件,就自己用swift写了一个,然后写了个Demo,自己总结一些,留着以后备用。
思路
主要分为这么几部分
1、显示控制PageControl
我们的bannerview一般都有指示器,所以第一步就是封装一个指示器,他们的类型定义了这几种,如果有需要我们也可以再扩展
2、图片缓存下载工具
我们以前都是swift使用的Kingfisher ,oc使用SD_WebImage 。这块呢,我是自己定义了一个下载管理类,由于只是图片,gif的下载,功能也没有那么复杂,就自己定义了一个,这样使用起来也不用引入别的包了,主要代码都在
LoadImageView.swift
文件中3、工具类
BannerTool.swift
当中主要是判断图片的格式、获取gif图,url的判断等一些公共的操作4、视频播放视图
这块主要包含两部分:
- 视频播放工具类
- 视频播放视图
4.1、视频播放工具类
ZYPlayer
这块主要是对AVPlayer
的封装,具体代码可以看实现
4.2、视频播放视图
ZYPlayerView
这块主要就是视频播放的视图了,主要是一些操作比如暂停、进度、时间指示等,由于banner中播放视频,没有向播放器那样操作比较多,因此这块比较简单,没有进行具体扩展,这块也可以把视频播放拿出来,单独做扩展成一个播放器。
5、BannerView
这个文件就是主要的bannner视图的逻辑了,就是对前面做的东西的统一整理,然后供大家来使用,这块支持这几种方式:
6、使用
使用方式是这样的,简单介绍两种,具体的可以看Demo
1、本地图片、网络图片、网络GIF混合
let bannerView = BannerView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 160))
bannerView.imageDatas = ["https://img.ivsky.com/img/tupian/pre/201911/04/shumu_daoying.jpg",
"WechatIMG105",
"https://img.ivsky.com/img/tupian/t/201911/09/ciwei.jpg",
"http://www.nbyh.info/uploadfiles/day_180315/201803151133523433.gif"]
self.view.addSubview(bannerView)
2、网络图片和视频
let bannerView = BannerView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 160))
bannerView.pageControl?.directionType = .rightDirection
bannerView.imageType = .bannerViewImageWithVideo
bannerView.imageDatas = ["http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4",
"https://img.ivsky.com/img/tupian/pre/201911/04/shumu_daoying.jpg",
"https://img.ivsky.com/img/tupian/t/201911/09/ciwei.jpg"]
self.view.addSubview(bannerView)
基本上就是这些,更多的东西,需要我们自己去探索,如果有问题请不吝指教,最后再奉上自己的Demo
希望大家能提出宝贵的意见,可以给我留言,也可以发邮件到我的邮箱:namezyqyx@163.com
谢谢大家,如果你有更好的想法或文章请告知,不胜感激。