资讯专栏INFORMATION COLUMN

Swift轮播图的实现及原理(支持xib)

gecko23 / 363人阅读

摘要:功能无限循环轮播图片点击代理本地远端图片混设支持调用支持旋转支持运行展示图使用方法下载后直接把和这个文件拉进项目中添加能用可视化就用可视化,不要再代码创建了添加下步计划支持开放更多功能如有意见,欢迎项目地址无限自动循环轮播图

原理:

总共只有三个UIImageView.

1.首先赋值: 显示三个image,把数据源中的第一个Image赋值在中间的UIImageView上,两边一次找到应该赋值的image;

2.更改数据: 滑动后,把数据源中应该显示的image赋值在中间的UIImageView上,然后更改两边的UIImageView上的数据,把scrollView的contentOffset的偏移量设为显示中间图片的偏移量(赋值后肉眼根本无法分辨,但是用户又可以左右滑动了,这就造成了无线循环滑动的假象);

GLCircleView 描述:

swift版的无限循环轮播图,可自定义时间间隔,设置本地、远端图片或混设,目前配合Kingfisher一起使用(url图片赋值ImageView和缓存)。

功能:

无限循环轮播

图片点击代理

本地、远端图片混设

支持code、xib、storyboard调用

支持旋转

支持iPhone、iPad

运行展示图:

使用方法:

下载后直接把CircleView.swift和CircleView.xib这2个文件拉进项目中

pod添加kingfisher

xib || storyboard:

        let imageArray: [GLImageModel] = [GLImageModel("first.jpg", type: .local), GLImageModel("second.jpg", type: .local), GLImageModel("third.jpg", type: .local)]
        
        self.circleView.imageModelArray = imageArray
        self.circleView.timeInterval = 5
        self.circleView.clickCircleViewClosure = { currentIndex in
            print(currentIndex, terminator: " ");
        }

code: (能用可视化就用可视化,不要再代码创建了)

        let imageArray: [GLImageModel] = [GLImageModel("first.jpg", type: .local), GLImageModel("second.jpg", type: .local), GLImageModel("third.jpg", type: .local)]
        
        self.circleView = GLCircleView(frame: CGRect(x: 0, y: 64, width: self.view.frame.size.width, height: 200))
        self.circleView.imageModelArray = imageArray
        self.circleView.timeInterval = 5
        self.circleView.clickCircleViewClosure = { currentIndex in
            print(currentIndex, terminator: " ");
        }
        self.view.addSubview(circleView)

添加:

        let urlImageModel = GLImageModel(self.circleView.imageModelArray.count % 2 == 0 ? url1 : url2, type: .url)
        self.circleView.imageModelArray.append(urlImageModel)
下步计划:

支持pod

开放更多功能

如有意见,欢迎issue

项目地址:swift无限自动循环轮播图

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/15794.html

相关文章

  • 无缝轮播图的一种方式原理

    摘要:无缝轮播的原理在滚动层前后分别插入最后一个元素和最前面一个元素,然后在动画滚到最后或者最前的时候,初始化滚动层的位置样式,速度很快,无法察觉,就如同无缝一般。 之前面试被问到这个问题,之前都是随便找大神插件,知道怎么去做,但是一直没实现过。 无缝轮播的原理 在滚动层前后分别插入最后一个元素和最前面一个元素,然后在动画滚到最后或者最前的时候,初始化滚动层的位置样式,速度很快,无法察觉,就...

    MudOnTire 评论0 收藏0
  • 无缝轮播图的一种方式原理

    摘要:无缝轮播的原理在滚动层前后分别插入最后一个元素和最前面一个元素,然后在动画滚到最后或者最前的时候,初始化滚动层的位置样式,速度很快,无法察觉,就如同无缝一般。 之前面试被问到这个问题,之前都是随便找大神插件,知道怎么去做,但是一直没实现过。 无缝轮播的原理 在滚动层前后分别插入最后一个元素和最前面一个元素,然后在动画滚到最后或者最前的时候,初始化滚动层的位置样式,速度很快,无法察觉,就...

    AlienZHOU 评论0 收藏0
  • 无缝轮播图的一种方式原理

    摘要:无缝轮播的原理在滚动层前后分别插入最后一个元素和最前面一个元素,然后在动画滚到最后或者最前的时候,初始化滚动层的位置样式,速度很快,无法察觉,就如同无缝一般。 之前面试被问到这个问题,之前都是随便找大神插件,知道怎么去做,但是一直没实现过。 无缝轮播的原理 在滚动层前后分别插入最后一个元素和最前面一个元素,然后在动画滚到最后或者最前的时候,初始化滚动层的位置样式,速度很快,无法察觉,就...

    BicycleWarrior 评论0 收藏0
  • 实现简单的播图

    摘要:小练习轮播图组件任务描述在和上一任务同一目录下面创建一个文件,在目录中创建,并在其中编码,实现一个轮播图的功能。实现思路考察对节点,定时器,事件的处理。 小练习3:轮播图组件 任务描述在和上一任务同一目录下面创建一个task0002_3.html文件,在js目录中创建task0002_3.js,并在其中编码,实现一个轮播图的功能。 图片数量及URL均在HTML中写好 可以配置轮播的顺...

    EsgynChina 评论0 收藏0
  • 回顾自己三次失败的面试经历

    摘要:站在这个时间点上,我对自己之前三次失败的面试经历做了一次深度回顾。关于我第三次面试失败的经历,依然是与轮播图有关。当然,这次思特奇面试之旅,最后也是以失败告终,这也是我离进大厂最近的一次。 showImg(https://segmentfault.com/img/bVYQuP?w=528&h=513); 前言 时间的齿轮已经来到了2017年的11月份,距离2018年仅仅还剩下不到两...

    DC_er 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<