bannerView
好久不寫文章了,前一段時間遇到要播放視頻的banner,也沒有找到合適的插件,就自己用swift寫了一個,然后寫了個Demo,自己總結一些,留著以后備用。
banner效果
思路
主要分為這么幾部分
1、顯示控制PageControl
我們的bannerview一般都有指示器,所以第一步就是封裝一個指示器,他們的類型定義了這幾種,如果有需要我們也可以再擴展
pageType
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視圖的邏輯了,就是對前面做的東西的統一整理,然后供大家來使用,這塊支持這幾種方式:
bannerViewType
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
謝謝大家,如果你有更好的想法或文章請告知,不勝感激。