iOS/swift新特性轮播

/**
 新特性轮播
 使用
 let newfeature = LYBNewFeatureScroll.init(frame: CGRect.init(x: 0, y: 0, width: WIDTH, height: HEIGHT))
 newfeature.images = ["bankBlue","bankGreen","bankRed","appstart"]
 UIApplication.shared.keyWindow!.addSubview(newfeature)
 */

import UIKit

class LYBNewFeatureScroll: UIView ,UIScrollViewDelegate{
    //属性观察器,相当于重写属性的set方法didset方法中scrollImages是新值,oldValue是旧值(固定写法)
   
//-用到的时候才开始加载
  var images:[String]=["bankBlue"]{
        willSet(scrollImagess) {
            print("新的值\(String(describing: images))")

        }
        didSet {
            print("新的值 \(String(describing: images))")
            print("旧的值 \(String(describing:  oldValue)) ")
            initviews()//有数据了创建轮播
        }
    }
//     var images:[String] = ["bankRed","bankBlue","bankGreen","appstart"]
  
    var  headerScroll:UIScrollView?
    var pagectr:UIPageControl?
  
    //定义一个闭包,有参数没返回值----按钮点击时调用
    var  scrollClickBlock:(Int)->()={ (Int)in return }
    
    override init(frame: CGRect) {
        super.init(frame: frame)

       initviews()
        
    }
    
        func initviews(){
            if(headerScroll==nil){
            headerScroll=UIScrollView.init(frame: CGRect(x: 0, y: 0, width:Int(WIDTH) , height:Int(HEIGHT)))
            }
            headerScroll?.showsHorizontalScrollIndicator=false
            for i in 1...images.count {
                let imageV:UIImageView=UIImageView.init(frame: CGRect(x:(i-1)*Int(WIDTH), y:0, width:Int(WIDTH) , height:Int(HEIGHT)))
                    imageV.image=UIImage.init(named: images[i-1])
                headerScroll!.addSubview(imageV)
            }
            headerScroll!.contentSize=CGSize(width: WIDTH*CGFloat(images.count)+10, height: 0)
            addSubview(headerScroll!)
            headerScroll?.isPagingEnabled=true//分页
            
            /**
             pageCcontrol
             */
            pagectr=UIPageControl.init(frame: CGRect.init(x: 50, y: Int(HEIGHT-30), width: Int(WIDTH-100), height: 30))
            pagectr?.numberOfPages=images.count;        pagectr?.currentPageIndicatorTintColor=UIColor.red
            pagectr?.pageIndicatorTintColor=UIColor.gray
            pagectr?.currentPage=0
                self.addSubview(pagectr!)
        //按钮
            let enterbtn:UIButton=UIButton.init(frame: CGRect.init(x: WIDTH-100, y: 50, width: 80, height: 50))
            enterbtn.addTarget(self, action: #selector(imageVClick), for: UIControl.Event.touchUpInside)
            enterbtn.setTitle("快速体验", for: UIControl.State.normal)
            enterbtn.setTitleColor(UIColor.gray, for: UIControl.State.normal)
            self.addSubview(enterbtn)
        }
        //轮播图点击事件
        @objc func imageVClick(sender:UIButton){
            //tag是从102开始,
            print("\(sender.tag)")
            self.scrollClickBlock(sender.tag)
        }
   
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}

猜你喜欢

转载自blog.csdn.net/u011146511/article/details/86081996