From 31b6be2dfcc5a7e9300c90b2216dbd579153c3b0 Mon Sep 17 00:00:00 2001 From: younger_times <841720330@qq.com> Date: 星期一, 10 七月 2023 19:22:00 +0800 Subject: [PATCH] 新增 --- WanPai/Common/View/CommonBannerView.swift | 378 +++++++++++++++++++++++++++--------------------------- 1 files changed, 189 insertions(+), 189 deletions(-) diff --git a/WanPai/Common/View/CommonBannerView.swift b/WanPai/Common/View/CommonBannerView.swift index 4b649ac..2af70e0 100644 --- a/WanPai/Common/View/CommonBannerView.swift +++ b/WanPai/Common/View/CommonBannerView.swift @@ -8,192 +8,192 @@ import UIKit import SDWebImage -class CommonBannerView: UIView,UIScrollViewDelegate { - - //图⽚⽔平放置到scrollView上 - private var scrollView:UIScrollView = UIScrollView() - //⼩圆点标识 - private var pageControl:UIPageControl = UIPageControl() - private var imageViews:Array = Array<UIImageView>() - - - //图⽚集合 - private var images:Array<String> = [] - private var type:ImageType? - - private var width:CGFloat = 0 - private var height:CGFloat = 0 - - private var currIndex = 0 - private var clickBlock :(Int)->Void = {index in} - - private var timer:Timer? - - // 默认⾃动播放 设置为false只能⼿动滑动 - var isAuto = true - // 轮播间隔时间 默认6秒可以⾃⼰修改 - var interval:Double = 6 - - private var startOffsetX:CGFloat = 0 - - override func layoutSubviews() { - super.layoutSubviews() - } - - public func setImages(images:Array<String>,type:ImageType - = .Image,imageClickBlock:@escaping (Int) -> Void) { - self.type = type - self.images = images - self.clickBlock = imageClickBlock - self.initLayout() - } - - private func initLayout(){ - if(self.images.count == 0){ - return - } - - width = self.bounds.width - height = self.bounds.height - - scrollView.frame = self.bounds - scrollView.contentSize = CGSize(width:width * CGFloat(images.count + - 2),height:height) - scrollView.contentOffset = CGPoint(x:width,y:0) - scrollView.isUserInteractionEnabled = true - scrollView.isPagingEnabled = true - scrollView.showsHorizontalScrollIndicator = false - scrollView.delegate = self - self.addSubview(scrollView) - - var image = UIImageView() - image.frame = CGRect(x:0,y:0,width:width,height:height) - image.contentMode = .scaleToFill - image.isUserInteractionEnabled = true - setImage(image: image, index: images.count - 1) - scrollView.addSubview(image) - for i in 1 ... images.count{ - let image = UIImageView() - image.frame = CGRect(x:width * - CGFloat(i),y:0,width:width,height:height) - image.contentMode = .scaleToFill - image.isUserInteractionEnabled = true - scrollView.addSubview(image) - setImage(image: image, index: i - 1) - addTapGesWithImage(image: image) - } - image = UIImageView() - image.frame = CGRect(x:width * CGFloat(images.count + - 1),y:0,width:width,height:height) - image.contentMode = .scaleToFill - image.isUserInteractionEnabled = true - scrollView.addSubview(image) - setImage(image: image, index: 0) - - pageControl.center = CGPoint(x:width/2,y:height - CGFloat(15)) - pageControl.isEnabled = true - pageControl.numberOfPages = images.count - pageControl.currentPageIndicatorTintColor = UIColor.green - pageControl.pageIndicatorTintColor = UIColor.gray - pageControl.isUserInteractionEnabled = false - self.addSubview(pageControl) - - //当前显示的只有 center_image 其他两个只是⽤来增加滑动时效果⽽已,不 - //addTapGesWithImage(image: center_image) - if(isAuto){ - openTimer() - } - setCurrent(currIndex: 0) - } - - private func setImage(image:UIImageView,index:Int){ - if(type == .Image){ - image.image = UIImage.init(named:images[index]) - }else{ - image.sd_setImage(with: URL(string: images[index])) - } - } - - func setCurrent(currIndex:Int) { - if(currIndex < 0){ - self.currIndex = images.count - 1 - }else{ - self.currIndex = currIndex - } - pageControl.currentPage = self.currIndex - scrollView.setContentOffset(CGPoint(x:width * CGFloat(self.currIndex + - 1),y:0), animated: false) - } - - //给图⽚添加点击⼿势 - private func addTapGesWithImage(image:UIImageView) { - let tap = UITapGestureRecognizer(target: self, action: #selector(tap(_:))) - image.isUserInteractionEnabled = true //让控件可以触发交互事件 - image.contentMode = .scaleToFill - // image.clipsToBounds = true //超出⽗控件的部分不显示 - image.addGestureRecognizer(tap) - } - - //点击图⽚,调⽤block - @objc func tap(_ ges:UITapGestureRecognizer) { - clickBlock((ges.view?.tag)!) - } - - func scrollViewDidScroll(_ scrollView: UIScrollView) { - - } - - func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { - startOffsetX = scrollView.contentOffset.x - closeTimer() - } - - func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate - decelerate: Bool) { - } - - func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { - if(scrollView.contentOffset.x > startOffsetX){ - currIndex = (currIndex + 1) % images.count - }else{ - currIndex = (currIndex - 1) % images.count - } - setCurrent(currIndex: currIndex) - openTimer() - } - - func openTimer(){ - if(isAuto){ - closeTimer() - timer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: - #selector(startAutoScroll), userInfo: nil, repeats: true) - } - } - - func closeTimer(){ - if(timer != nil){ - timer?.invalidate() - timer = nil - } - } - - - @objc func startAutoScroll(){ - if(isDisplayInScreen()){ - setCurrent(currIndex: (currIndex + 1) % images.count) - } - } - - func isDisplayInScreen() -> Bool{ - if(self.window == nil){ - return false - } - return true - } - -} -enum ImageType{ - case Image //本地图⽚ - case URL //URL - -} +//class CommonBannerView: UIView,UIScrollViewDelegate { +// +// //图⽚⽔平放置到scrollView上 +// private var scrollView:UIScrollView = UIScrollView() +// //⼩圆点标识 +// private var pageControl:UIPageControl = UIPageControl() +// private var imageViews:Array = Array<UIImageView>() +// +// +// //图⽚集合 +// private var images:Array<String> = [] +// private var type:ImageType? +// +// private var width:CGFloat = 0 +// private var height:CGFloat = 0 +// +// private var currIndex = 0 +// private var clickBlock :(Int)->Void = {index in} +// +// private var timer:Timer? +// +// // 默认⾃动播放 设置为false只能⼿动滑动 +// var isAuto = true +// // 轮播间隔时间 默认6秒可以⾃⼰修改 +// var interval:Double = 6 +// +// private var startOffsetX:CGFloat = 0 +// +// override func layoutSubviews() { +// super.layoutSubviews() +// } +// +// public func setImages(images:Array<String>,type:ImageType +// = .Image,imageClickBlock:@escaping (Int) -> Void) { +// self.type = type +// self.images = images +// self.clickBlock = imageClickBlock +// self.initLayout() +// } +// +// private func initLayout(){ +// if(self.images.count == 0){ +// return +// } +// +// width = self.bounds.width +// height = self.bounds.height +// +// scrollView.frame = self.bounds +// scrollView.contentSize = CGSize(width:width * CGFloat(images.count + +// 2),height:height) +// scrollView.contentOffset = CGPoint(x:width,y:0) +// scrollView.isUserInteractionEnabled = true +// scrollView.isPagingEnabled = true +// scrollView.showsHorizontalScrollIndicator = false +// scrollView.delegate = self +// self.addSubview(scrollView) +// +// var image = UIImageView() +// image.frame = CGRect(x:0,y:0,width:width,height:height) +// image.contentMode = .scaleToFill +// image.isUserInteractionEnabled = true +// setImage(image: image, index: images.count - 1) +// scrollView.addSubview(image) +// for i in 1 ... images.count{ +// let image = UIImageView() +// image.frame = CGRect(x:width * +// CGFloat(i),y:0,width:width,height:height) +// image.contentMode = .scaleToFill +// image.isUserInteractionEnabled = true +// scrollView.addSubview(image) +// setImage(image: image, index: i - 1) +// addTapGesWithImage(image: image) +// } +// image = UIImageView() +// image.frame = CGRect(x:width * CGFloat(images.count + +// 1),y:0,width:width,height:height) +// image.contentMode = .scaleToFill +// image.isUserInteractionEnabled = true +// scrollView.addSubview(image) +// setImage(image: image, index: 0) +// +// pageControl.center = CGPoint(x:width/2,y:height - CGFloat(15)) +// pageControl.isEnabled = true +// pageControl.numberOfPages = images.count +// pageControl.currentPageIndicatorTintColor = UIColor.green +// pageControl.pageIndicatorTintColor = UIColor.gray +// pageControl.isUserInteractionEnabled = false +// self.addSubview(pageControl) +// +// //当前显示的只有 center_image 其他两个只是⽤来增加滑动时效果⽽已,不 +// //addTapGesWithImage(image: center_image) +// if(isAuto){ +// openTimer() +// } +// setCurrent(currIndex: 0) +// } +// +// private func setImage(image:UIImageView,index:Int){ +// if(type == .Image){ +// image.image = UIImage.init(named:images[index]) +// }else{ +// image.sd_setImage(with: URL(string: images[index])) +// } +// } +// +// func setCurrent(currIndex:Int) { +// if(currIndex < 0){ +// self.currIndex = images.count - 1 +// }else{ +// self.currIndex = currIndex +// } +// pageControl.currentPage = self.currIndex +// scrollView.setContentOffset(CGPoint(x:width * CGFloat(self.currIndex + +// 1),y:0), animated: false) +// } +// +// //给图⽚添加点击⼿势 +// private func addTapGesWithImage(image:UIImageView) { +// let tap = UITapGestureRecognizer(target: self, action: #selector(tap(_:))) +// image.isUserInteractionEnabled = true //让控件可以触发交互事件 +// image.contentMode = .scaleToFill +// // image.clipsToBounds = true //超出⽗控件的部分不显示 +// image.addGestureRecognizer(tap) +// } +// +// //点击图⽚,调⽤block +// @objc func tap(_ ges:UITapGestureRecognizer) { +// clickBlock((ges.view?.tag)!) +// } +// +// func scrollViewDidScroll(_ scrollView: UIScrollView) { +// +// } +// +// func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { +// startOffsetX = scrollView.contentOffset.x +// closeTimer() +// } +// +// func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate +// decelerate: Bool) { +// } +// +// func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { +// if(scrollView.contentOffset.x > startOffsetX){ +// currIndex = (currIndex + 1) % images.count +// }else{ +// currIndex = (currIndex - 1) % images.count +// } +// setCurrent(currIndex: currIndex) +// openTimer() +// } +// +// func openTimer(){ +// if(isAuto){ +// closeTimer() +// timer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: +// #selector(startAutoScroll), userInfo: nil, repeats: true) +// } +// } +// +// func closeTimer(){ +// if(timer != nil){ +// timer?.invalidate() +// timer = nil +// } +// } +// +// +// @objc func startAutoScroll(){ +// if(isDisplayInScreen()){ +// setCurrent(currIndex: (currIndex + 1) % images.count) +// } +// } +// +// func isDisplayInScreen() -> Bool{ +// if(self.window == nil){ +// return false +// } +// return true +// } +// +//} +//enum ImageType{ +// case Image //本地图⽚ +// case URL //URL +// +//} -- Gitblit v1.7.1