仿SDCycleScrollView(Swift版本)

来源:互联网 发布:python 单核可以子进程 编辑:程序博客网 时间:2024/06/10 15:31

仿SDCycleScrollView(Swift版本)


废话不多说,在开发中,cycleScrollView是经常要用到的一个控件,以下是我封装的一个cycleScrollview的swift版本cycleScrollView+timer(GIT地址)


核心代码

/**         *  配置轮播数据源         */        var newImageUrlStrings: [String] = imageUrlStrings        if imageUrlStrings.count > 1 {            newImageUrlStrings.insert(imageUrlStrings.last!, at: 0)            newImageUrlStrings.append(imageUrlStrings.first!)        }        for imageUrlStrig in newImageUrlStrings {            let tmpImageView = UIImageView.init(frame: CGRect.init(x: x, y: 0, width: mFrame.width, height: mFrame.height))            tmpImageView.tag = imageUrlStrings.index(of: imageUrlStrig)!            self.mScrollView.addSubview(tmpImageView)            /**             *  设置数据源             */            tmpImageView.kf.setImage(with: URL.init(string: imageUrlStrig), placeholder: mPlaceholderImage, options: nil, progressBlock: { (a, b) in            }, completionHandler: { (image, error, cacheType, url) in            })            /**             *  添加图片点击事件             */            tmpImageView.isUserInteractionEnabled = true            tmpImageView.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(self.didSelectImageView(tap:))))            x+=mFrame.width        }        self.mPage.numberOfPages = imageUrlStrings.count        self.mScrollView.contentSize = CGSize.init(width: mFrame.width * CGFloat(newImageUrlStrings.count), height: mFrame.height)        if newImageUrlStrings.count > 0 {            mScrollView.scrollRectToVisible(CGRect.init(origin: CGPoint.init(x: mScrollView.frame.width, y: mScrollView.frame.origin.y), size: mScrollView.frame.size), animated: false)        }        self.startTimer()
因为swift最新版本提供的定时器只支持10.0以上版本,为了兼容低版本系统,Demo中也同时封装了一个定时器的类(通过GCD实现的),并且使用的API和系统相近。如有错误,希望不吝指出共勉。
原创粉丝点击