From a2589f9891509d85a873192d56e785885513e780 Mon Sep 17 00:00:00 2001
From: younger_times <841720330@qq.com>
Date: 星期二, 18 七月 2023 15:54:32 +0800
Subject: [PATCH] 新增

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

diff --git a/WanPai/Common/View/CommonBannerView.swift b/WanPai/Common/View/CommonBannerView.swift
index 2af70e0..b1f4ff4 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?
-//
+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
-//
-//}
+
+    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