From fd05d3dfc61ad3482cfd577279cff72f74c68cf6 Mon Sep 17 00:00:00 2001
From: 无故事王国 <841720330@qq.com>
Date: 星期二, 12 三月 2024 17:13:57 +0800
Subject: [PATCH] fix bug 2.0

---
 WanPai/Common/View/CommonBannerView.swift |  382 +++++++++++++++++++++++++++---------------------------
 1 files changed, 191 insertions(+), 191 deletions(-)

diff --git a/WanPai/Common/View/CommonBannerView.swift b/WanPai/Common/View/CommonBannerView.swift
index bacf7e2..b7117d0 100644
--- a/WanPai/Common/View/CommonBannerView.swift
+++ b/WanPai/Common/View/CommonBannerView.swift
@@ -1,208 +1,208 @@
-    //
-    //  CommonBannerView.swift
-    //  WanPai
-    //
-    //  Created by 无故事王国 on 2023/6/30.
-    //
+//
+//  CommonBannerView.swift
+//  WanPai
+//
+//  Created by 无故事王国 on 2023/6/30.
+//
 
 import UIKit
 import SDWebImage
 struct CommonBannerModel {
-	var index = 0 //自定义索引
-	var id:Int? //ID
-	var name:String? //名称
-	var resource:String? //数据源:URL等
-	var mediaType:CommonBannerView.MediaType?
+				var index = 0 //自定义索引
+				var id:Int? //ID
+				var name:String? //名称
+				var resource:String? //数据源:URL等
+				var mediaType:CommonBannerView.MediaType?
 }
 
 class CommonBannerView: UIView, UICollectionViewDelegate, UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {
 
-	enum MediaType {
-		case videoUrl,imageUrl,imageLocal,videoLocal
-	}
-
-	private lazy var collectionView:UICollectionView = {
-		var layout = UICollectionViewFlowLayout()
-		layout.minimumLineSpacing = 0
-		layout.minimumInteritemSpacing = 0
-		layout.scrollDirection = .horizontal
-		layout.sectionInset = .zero
-		layout.headerReferenceSize = .zero
-		layout.footerReferenceSize = .zero
-		layout.itemSize = CGSize(width: self.width, height: self.height)
-		let collectionView = UICollectionView(frame:CGRect(x: 0, y: 0, width: self.width, height: self.height), collectionViewLayout: layout)
-		collectionView.delegate = self
-		collectionView.dataSource = self
-		collectionView.isPagingEnabled = true
-		collectionView.showsHorizontalScrollIndicator = false
-		collectionView.register(CommonBannerViewCell.self, forCellWithReuseIdentifier: "BannerView")
-		collectionView.decelerationRate = .normal
-		collectionView.contentInsetAdjustmentBehavior = .never
-		collectionView.backgroundColor = .white
-		collectionView.bounces = false
-		return collectionView
-	}()
-
-	private lazy var pageControl:UIPageControl = {
-		let control = UIPageControl()
-		control.currentPageIndicatorTintColor = .white
-		control.pageIndicatorTintColor = .gray.withAlphaComponent(0.6)
-		return control
-	}()
-
-	private var timer:Timer?
-
-	private var items = [CommonBannerModel]()
-	private var selectClouse:((CommonBannerModel)->Void)?
-	private var autoRoll:Bool = true
-	private var currentPage:Int = 0
-	private var timeInterval:Int = 5
-
-	override func awakeFromNib() {
-		super.awakeFromNib()
-		setUI()
-	}
-
-	public func setItems(items:[CommonBannerModel],autoRoll:Bool = true,selectClouse:((CommonBannerModel)->Void)? = nil){
-
-		self.items = items
-		if items.count > 1{
-			self.items.append(items.first!)
-		}
-		self.autoRoll = autoRoll
-		self.selectClouse = selectClouse
-		if items.count <= 1{self.autoRoll = false}
-
-		setUI()
-		collectionView.reloadData()
-
-		if self.autoRoll{
-			DispatchQueue.main.asyncAfter(deadline: .now()+5) {
-				self.startTimer()
-			}
-		}
-	}
-
-	private func setUI(){
-		addSubview(collectionView)
-		collectionView.snp.makeConstraints { make in
-			make.edges.equalToSuperview()
-		}
-
-		if items.count > 1{
-			pageControl.numberOfPages = items.count - 1
-
-			addSubview(pageControl)
-			pageControl.snp.makeConstraints { make in
-				make.centerX.equalToSuperview()
-				make.bottom.equalToSuperview().offset(-10)
-				make.height.equalTo(8)
-			}
-		}
-	}
-
-	private func startTimer(){
-		timer = Timer(timeInterval: TimeInterval(timeInterval), repeats: true, block: {[weak self] t in
-			guard let weakSelf = self else { return }
-
-			var page = weakSelf.collectionView.contentOffset.x / weakSelf.collectionView.width
-			weakSelf.currentPage = Int(page + 1)
-
-			if weakSelf.currentPage >= weakSelf.pageControl.numberOfPages{
-				weakSelf.currentPage = 0
-				weakSelf.collectionView.setContentOffset(.zero, animated: false)
-				weakSelf.pageControl.currentPage = 0
-			}
-			weakSelf.collectionView.setContentOffset(CGPoint(x: weakSelf.currentPage * Int(weakSelf.width), y: 0), animated: true)
-		})
-		timer?.fire()
-		RunLoop.current.add(timer!, forMode: .common)
-	}
-
-	func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-		return items.count
-	}
-
-	func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-		let item = items[indexPath.row]
-		selectClouse?(item)
-	}
-
-	func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
-		return CGSize(width:collectionView.bounds.size.width,height:ceil(collectionView.bounds.size.height))
-	}
-
-	func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
-		print("--开始滑动")
-		timer?.fireDate = Date.distantFuture
-	}
-
-	func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
-		let page = scrollView.contentOffset.x / scrollView.width
-		if page.int >= pageControl.numberOfPages{
-			pageControl.currentPage = 0
-		}else{
-			pageControl.currentPage = page.int
-		}
-		print("--结束滑动")
-		timer?.fireDate = Date.init(timeIntervalSinceNow: 3.0) //3秒后开启
-	}
-
-	func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
-		let page = scrollView.contentOffset.x / scrollView.width
-		if page.int >= pageControl.numberOfPages{
-			pageControl.currentPage = 0
-		}else{
-			pageControl.currentPage = page.int
-		}
-	}
-
-	func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
-		let page = scrollView.contentOffset.x / scrollView.width
-		if page.int >= pageControl.numberOfPages{
-			pageControl.currentPage = 0
-			collectionView.setContentOffset(.zero, animated: false)
-		}else{
-			pageControl.currentPage = page.int
-		}
-	}
-
-	func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-		let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "BannerView", for: indexPath) as! CommonBannerViewCell
-		let item = items[indexPath.row]
-
-		switch item.mediaType {
-			case .imageUrl:
-				if let i = item.resource{
-					cell.imgView.sd_setImage(with: URL(string: i))
+				enum MediaType {
+								case videoUrl,imageUrl,imageLocal,videoLocal
 				}
-			case .imageLocal:
-				if let i = item.resource{
-					cell.imgView.image = UIImage(named: i)
+
+				private lazy var collectionView:UICollectionView = {
+								var layout = UICollectionViewFlowLayout()
+								layout.minimumLineSpacing = 0
+								layout.minimumInteritemSpacing = 0
+								layout.scrollDirection = .horizontal
+								layout.sectionInset = .zero
+								layout.headerReferenceSize = .zero
+								layout.footerReferenceSize = .zero
+								layout.itemSize = CGSize(width: self.width, height: self.height)
+								let collectionView = UICollectionView(frame:CGRect(x: 0, y: 0, width: self.width, height: self.height), collectionViewLayout: layout)
+								collectionView.delegate = self
+								collectionView.dataSource = self
+								collectionView.isPagingEnabled = true
+								collectionView.showsHorizontalScrollIndicator = false
+								collectionView.register(CommonBannerViewCell.self, forCellWithReuseIdentifier: "BannerView")
+								collectionView.decelerationRate = .normal
+								collectionView.contentInsetAdjustmentBehavior = .never
+								collectionView.backgroundColor = .white
+								collectionView.bounces = false
+								return collectionView
+				}()
+
+				private lazy var pageControl:UIPageControl = {
+								let control = UIPageControl()
+								control.currentPageIndicatorTintColor = .white
+								control.pageIndicatorTintColor = .gray.withAlphaComponent(0.6)
+								return control
+				}()
+
+				private var timer:Timer?
+
+				private var items = [CommonBannerModel]()
+				private var selectClouse:((CommonBannerModel)->Void)?
+				private var autoRoll:Bool = true
+				private var currentPage:Int = 0
+				private var timeInterval:Int = 5
+
+				override func awakeFromNib() {
+								super.awakeFromNib()
+								setUI()
 				}
-			default:break
-		}
-		return cell
-	}
+
+				public func setItems(items:[CommonBannerModel],autoRoll:Bool = true,selectClouse:((CommonBannerModel)->Void)? = nil){
+
+								self.items = items
+								if items.count > 1{
+												self.items.append(items.first!)
+								}
+								self.autoRoll = autoRoll
+								self.selectClouse = selectClouse
+								if items.count <= 1{self.autoRoll = false}
+
+								setUI()
+								collectionView.reloadData()
+
+								if self.autoRoll{
+												DispatchQueue.main.asyncAfter(deadline: .now()+5) {
+																self.startTimer()
+												}
+								}
+				}
+
+				private func setUI(){
+								addSubview(collectionView)
+								collectionView.snp.makeConstraints { make in
+												make.edges.equalToSuperview()
+								}
+
+								if items.count > 1{
+												pageControl.numberOfPages = items.count - 1
+
+												addSubview(pageControl)
+												pageControl.snp.makeConstraints { make in
+																make.centerX.equalToSuperview()
+																make.bottom.equalToSuperview().offset(-10)
+																make.height.equalTo(8)
+												}
+								}
+				}
+
+				private func startTimer(){
+								timer = Timer(timeInterval: TimeInterval(timeInterval), repeats: true, block: {[weak self] t in
+												guard let weakSelf = self else { return }
+
+												var page = weakSelf.collectionView.contentOffset.x / weakSelf.collectionView.width
+												weakSelf.currentPage = Int(page + 1)
+
+												if weakSelf.currentPage >= weakSelf.pageControl.numberOfPages{
+																weakSelf.currentPage = 0
+																weakSelf.collectionView.setContentOffset(.zero, animated: false)
+																weakSelf.pageControl.currentPage = 0
+												}
+												weakSelf.collectionView.setContentOffset(CGPoint(x: weakSelf.currentPage * Int(weakSelf.width), y: 0), animated: true)
+								})
+								timer?.fire()
+								RunLoop.current.add(timer!, forMode: .common)
+				}
+
+				func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
+								return items.count
+				}
+
+				func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
+								let item = items[indexPath.row]
+								selectClouse?(item)
+				}
+
+				func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
+								return CGSize(width:collectionView.bounds.size.width,height:ceil(collectionView.bounds.size.height))
+				}
+
+				func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
+								print("--开始滑动")
+								timer?.fireDate = Date.distantFuture
+				}
+
+				func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
+								let page = scrollView.contentOffset.x / scrollView.width
+								if page.int >= pageControl.numberOfPages{
+												pageControl.currentPage = 0
+								}else{
+												pageControl.currentPage = page.int
+								}
+								print("--结束滑动")
+								timer?.fireDate = Date.init(timeIntervalSinceNow: 3.0) //3秒后开启
+				}
+
+				func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
+								let page = scrollView.contentOffset.x / scrollView.width
+								if page.int >= pageControl.numberOfPages{
+												pageControl.currentPage = 0
+								}else{
+												pageControl.currentPage = page.int
+								}
+				}
+
+				func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
+								let page = scrollView.contentOffset.x / scrollView.width
+								if page.int >= pageControl.numberOfPages{
+												pageControl.currentPage = 0
+												collectionView.setContentOffset(.zero, animated: false)
+								}else{
+												pageControl.currentPage = page.int
+								}
+				}
+
+				func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
+								let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "BannerView", for: indexPath) as! CommonBannerViewCell
+								let item = items[indexPath.row]
+
+								switch item.mediaType {
+												case .imageUrl:
+																if let i = item.resource{
+																				cell.imgView.sd_setImage(with: URL(string: i))
+																}
+												case .imageLocal:
+																if let i = item.resource{
+																				cell.imgView.image = UIImage(named: i)
+																}
+												default:break
+								}
+								return cell
+				}
 }
 
 class CommonBannerViewCell: UICollectionViewCell {
 
-	lazy var imgView:UIImageView = {
-		let img = UIImageView()
-		img.contentMode = .scaleToFill
-		return img
-	}()
+				lazy var imgView:UIImageView = {
+								let img = UIImageView()
+								img.contentMode = .scaleToFill
+								return img
+				}()
 
-	override init(frame: CGRect) {
-		super.init(frame: frame)
-		contentView.addSubview(imgView)
-		imgView.snp.makeConstraints { make in
-			make.edges.equalToSuperview()
-		}
-	}
+				override init(frame: CGRect) {
+								super.init(frame: frame)
+								contentView.addSubview(imgView)
+								imgView.snp.makeConstraints { make in
+												make.edges.equalToSuperview()
+								}
+				}
 
-	required init?(coder aDecoder: NSCoder) {
-		fatalError("init(coder:) has not been implemented")
-	}
+				required init?(coder aDecoder: NSCoder) {
+								fatalError("init(coder:) has not been implemented")
+				}
 }

--
Gitblit v1.7.1