swfit 輪播圖(一)

自定義了一個banner類。完全憑藉OC的感覺寫的。話不多說,直接上代碼

//
//  LHWhellPlantImage.swift
//  safari
//
//  Created by 磊懷王 on 2019/12/2.
//  Copyright © 2019 磊懷王. All rights reserved.
//

import UIKit

class LHWhellPlantImage: NSObject,UIScrollViewDelegate {
    
    override init() {
        super.init()
    }
    
    /// 輪播圖的實現類
    /// - Parameters:
    ///   - imageArr: 原始圖片數組   即圖片的名字
    ///   - superView: 所要加載的父視圖
    ///   - rect: 輪播圖的位置
    func initWhellPantImage(_ imageArr : Array<String>,_ superView : UIView,_ rect : CGRect) -> Void {
        let imageScro : UIScrollView = UIScrollView.init()
        imageScro.frame = rect
        imageScro.backgroundColor = UIColor.black
        superView.addSubview(imageScro)
        
        let scroW = imageScro.frame.size.width
        let scroH = imageScro.frame.size.height
        
        var newImageArr : Array<String> = Array.init()
        newImageArr += imageArr
        newImageArr.insert(imageArr.last!, at: 0)
        newImageArr.insert(imageArr.first!, at: newImageArr.count)
        for tempImage in newImageArr.enumerated() {
            print(tempImage)
            let imageR : CGRect = CGRect.init(x: scroW * CGFloat(tempImage.offset), y: 0, width: scroW, height: scroH)
            
            let imageV = UIImageView.init(frame: imageR)
            imageV.image = UIImage.init(named: tempImage.element)
            imageScro.addSubview(imageV)
            // 添加點擊事件
            let tap = UITapGestureRecognizer.init(target: self, action: #selector(touchWhellImage(_:)))
            imageV.addGestureRecognizer(tap)
            imageV.isUserInteractionEnabled = true
            imageV.tag = 100 + tempImage.offset
        }
        
        imageScro.contentSize = CGSize.init(width: scroW * CGFloat(newImageArr.count), height: scroH)
        imageScro.contentOffset = CGPoint.init(x: scroW, y: 0);
        imageScro.isUserInteractionEnabled = true
        imageScro.isPagingEnabled = true
        imageScro.delegate = self
    }
    
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let scroW = scrollView.frame.size.width
        let pageAll = scrollView.contentSize.width / scroW
        let page = scrollView.contentOffset.x / scroW
        if page == 0 {
            scrollView.contentOffset = CGPoint.init(x: scroW * CGFloat(pageAll - 2), y: 0)
        }else if page == (pageAll - 1){
            scrollView.contentOffset = CGPoint.init(x: scroW, y: 0)
        }
    }
    
    @objc func touchWhellImage(_ ges : UITapGestureRecognizer) -> Void {
        print("點擊了第\(ges.view!.tag - 100)張圖片")
    }
}

效果圖如下:在這裏插入圖片描述

調用方法

let whell : LHWhellPlantImage = LHWhellPlantImage.init()  //需要聲明爲全局變量

func bannerScroller() -> Void {
        let imageArr : Array = ["scroll001","scroll002","scroll003","scroll004","scroll005","scroll006","scroll007","scroll008","scroll009"]
        let rect : CGRect = CGRect.init(x: 10, y: 200, width: UIScreen.main.bounds.size.width - 20, height: 100)
        
        whell.initWhellPantImage(imageArr, self.view, rect)
        
    }

下篇微博 我將加上 自定義的輪播圖的指示器,請繼續關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章