Swift-实现轮播图滚动,图片点击放大,定时器暂停和继续等功能

个人链接
  • 博客园主页 : 博客园主页
  • GitHub : 我的GitHub
  • iOS程序猿(媛)~~ : 这是我个人整理的一个技术专题, 这里的文章都是比较有技术含量(不断更新)!
  • 微信公众号 :
Swift-实现轮播图滚动,图片点击放大,定时器暂停和继续等功能_第1张图片
微信公众号.jpg
功能部分:
  • 前言:图片轮播器在很多应用软件中都有应用,需要制作无限滚动的 ,下面贴上自己写的小Demo,能实现相关的功能。比如:实现轮播图滚动,图片点击放大,定时器暂停和继续等功能!
  • 好了,直接看效果图吧:


    Swift-实现轮播图滚动,图片点击放大,定时器暂停和继续等功能_第2张图片
    效果图
  • 代码下载地址:https://github.com/NSLog-YuHaitao/SwiftUIScrollView_etc
  • 敬请关注,代码将持续更新...
一.创建scrollView
    func createScrollView() -> Void {
        scrollView = UIScrollView.init(frame: CGRect.init(x: 0, y: 0, width: SCRRENW, height: 200))//初始化
        scrollView.contentSize = CGSize.init(width:CGFloat(dataArr.count) * SCRRENW, height: 0)//滚动的大小
        scrollView.backgroundColor = UIColor.white//背景色
        scrollView.showsHorizontalScrollIndicator = false//去除水平滚动条
        scrollView.isPagingEnabled = true//单页
        scrollView.delegate = self//代理方法
        self.view.addSubview(scrollView)//添加到主视图上
        
        let sheight : CGFloat = scrollView.frame.size.height
        let sorigin : CGFloat = scrollView.frame.origin.y
        
        //初始化点控制
        page = UIPageControl.init(frame: CGRect.init(x:SCRRENW/2 - 50, y: sorigin + sheight - 20 , width: 100, height: 15))
        page.numberOfPages = dataArr.count//点控制数量
        page.currentPage = 0//当前所在页面
        page.pageIndicatorTintColor = UIColor.red//未选中颜色
        page.currentPageIndicatorTintColor = UIColor.green//当前选中颜色
        self.view.addSubview(page)//添加到主视图
    }
二.创建时间控制器
    func addTimer() -> Void {
        timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(timerEvent), userInfo: nil, repeats: true)
        //多线程 UI IOS程序默认只有一个主线程,处理UI的只有主线程。如果拖动第二个UI,则第一个UI事件则会失效。
        RunLoop.current.add(timer, forMode: RunLoopMode.commonModes)
    }
三.滚动时所触发的方法
   //MARK: 实现轮播图首尾相连的显示
    func timerEvent() -> Void {
        let index : Int = Int (scrollView.contentOffset.x/SCRRENW)
        //print(index)
        if index >= 3 {
            page.currentPage = 0
            scrollView.contentOffset = CGPoint.init(x: 0, y: 0)
        }else{
            page.currentPage = index + 1
            scrollView.contentOffset = CGPoint.init(x: CGFloat(CGFloat(index+1)*SCRRENW), y: 0)
        }
    }
    
    //MARK: 实现UIScrollView代理方法
    func scrollViewDidScroll(_ scrollView: UIScrollView){
        let index : Int = Int (scrollView.contentOffset.x/SCRRENW)
        page.currentPage = index
    }
声明
  • 所有文章出自 Kenny Hito 的博客 !
  • 未经本人允许不得转载, 转载请标明来源与作者, 谢谢合作!

你可能感兴趣的:(Swift-实现轮播图滚动,图片点击放大,定时器暂停和继续等功能)