iOS-Main-细讲图片轮播

前言:在做应用程序的时候,我们考虑一下,有个细节。网络,其实不难,做APP其实我们就是考虑的两个方面一是数据,二是UI。通常AFN异步,拿过来字典转模型,做完字典转模型又做UI的事情,其实AFN就是发送一个请求,回来就算完了。要么一个get,要么一个POST。数据呢,分为一个本地,一个网络,最终呢,都是要转成模型。如图所示:
基本思路

要做什莫
第一部分:准备数据
  • 1.创建一个名为 "UI-图片轮播器" 的工程,配置好环境。拖入素材。
    创建工程,拖入素材

    [了解]:
    属性和成员变量的区别?
    - 属性: 提供了getter & setter / 成员变量
    - 成员变量
    - 真正保存数据的是"成员变量"
  • 2 创建一个数组存储图片url的成员变量,并加载数据.代码及打印结果如下:


    示例代码

    打印结果

    若fileName = nil
第二部分:搭建界面

基本思路:封装一个轮播器的视图,传入urls即可,用collectView来做。如图所示:

思维导图

为了便于封装
LoopView

创建类
创建类

导入头文件

创建界面

这时候,运行会报错
需要一个非空的layout
没有初始化layout

为了方便外部的调用,通常我们会,把layout写在collectView内部,如下图:
内部封装

第二部分:传递数据
思维导图

改造init,如下图所示:


改造init

测试数据是否传输成功


打断点

为外界提供接口

如果,这回运行,仍然会报错
如下图详解:
图解

再次运行:


获取数据成功
第三部分:设置数据源
思维导图

遵守数据源,设置协议


遵守数据源,设置协议

实现协议->标识符->注册


实现协议

标识符

注册

为了看到显示,我们可以给它设置一个随机颜色
随机颜色
第四部分:自定义Cell布局

思维导图

创建一个布局的子类
创建布局的子类

查看父类

1

准备layout

导入头文件改写系统layout

打印出来的collectionView大小,我们写的是一样的,如下图所示:
打印collectionView大小

这时候我们就会发现:
这时候我们就会发现

collectionView的设置
1

2

3

发现
在以前用collectionView的时候,设置格子的大小,我们需要管理生命周期,但是用这个方法,我们可以将属性一次性设置好。这个方法非常犀利。
用了自定义布局,就不用考虑,一切有关视图生命周期的东西。

第五部分:自定义布局-->显示图像
思维导图

创建cell


创建cell

初始化-打断点测试


初始化

替换系统的cell,只替换了注册中的系统cell
替换系统的cell

运行,测试结果如图:
测试结果

添加图像视图


添加图像视图-测试

更改上图

给外界提供url接口

set方法设置

传值
第五部分:实现轮播,可以左右拖拽

思维导图

做到这个时候,我们发现我们的轮播图只能往右拖,而不能往左拖。而,这个时候我们就要考虑,如果需要轮播图往左拖,我们该怎么办呢?
请看下图的思路:
我们在图片定位于图片位置,在,左边在加上一组:
基本思路
基本思路

我们将,图下的数据源*2 就相当与加上了一组,但是一运行,就会会造成崩溃。
加上一组 *2

会发现数组越界了
数组越界

越界在哪呢?怎么解决呢?
要想解决我们需要,我们已经把图片分成两组,但是因为我们有三张图片,6个位置。我们可以取模%,来解决数组越界问题,如下图:
取模

那么怎么让图片往左移动呢,应该让图片,初始化第二组。我们找到构造函数,让它滚动过去就可以了,如下图:

我们在运行,发现还是往左滑不动,为什莫呢?
说明这里的滚动没有生效。

这里引出一个面试题,在开发中,什莫时候使用过多线程,不要给我说AFN!

先执行数据源方法,在执行滚动方法:
主队列异步走到第二组:
如下图:


1

2

这回我们就可以往左拖了...



提示
第六部分:无限轮播的实现
思维导图

如果,将图片,拖拽到下图那种情况,还要继续往右拖拽怎么办?



滚动到最后一张图片时,将图片定位于下图位置:


定位-右

同样是,当滚动到第一张时,还要往左滚,我们将图片定位于下图样式:
定位-左

那么,我们就要监听它滚动的位置:

遵守协议,设置代理


遵守协议,设置代理

实现方法无限轮播
无限轮播

这时候,还有一个bug,当我们快速滚动时,会造成下的卡顿
原因是,当它跳到最后一张时,他需要做一个contentoffset的一个切换。一当切换了,用户的手势就会不连贯
解决如下:
3

300

这样怎么也不会卡了。。。
整体思路

终于赶完了,完毕!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,019评论 4 62
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,464评论 25 707
  • “人生苦难重重。”——开篇第一句便直指主题,这是一条困难重重的路,向来少有人走,但若是“正确理解并接受,那么就再也...
    T0_欣阅读 188评论 0 0
  • 《如何打造你的独特观点》 我们是随波逐流还是另辟蹊径,我们要对自己对未来有清晰的规划,创业不是一个草率的决定,是我...
    约梵阅读 192评论 0 0
  • 中秋节在东北参加完婚礼后,我与旧友打车去机场。 车上,问起了当地房价,司机说,市中心顶多四五千一平米,偏一点的三四...
    简浅Jian阅读 1,130评论 2 8