项目需求:做一个图片浏览器,点击图片查看大图,大图模式下,左右滚动能查看不同的图片.
项目的主要核心技术:图片的弹出和消失动画
![](https://i-blog.csdnimg.cn/blog_migrate/247b6af546048029651682b3b218769b.gif)
一.对代码进行重构
1.对代码进行抽取划分
1.1 为什么要对代码进行抽取?
swift中,代码全部写在一起,阅读性极差
2.如何对代码进行抽取?
2.1在oc中,可以把功能模块抽取一个个方法
2.2swift中,专门提供 extension ,可以对原有的类进行扩展
3.怎么使用extension 抽取代码?
3.1 把一些方法写在extension(扩展)里面,这样能减少viewDidLoad里面的代码
3.2 extension可以写多个,这样就可以把不同的功能模块 ,写在不同的扩展里面
![](https://i-blog.csdnimg.cn/blog_migrate/e3393a845f0496bc12873b9ddc40b694.png)
二.项目基本设置
1.修改bundleID
2.部署版本
3.设置项目图片,启动图片
4.对文件夹目录进行划分
三.首页布局
1.让首页为UICollectionViewController
2.设置数据源
3.自定义布局
3.1 创建一个源文件,继承自UICollectionViewFlowLayout
3.2 重写 prepareLayout
3.3 设置布局的相关属性
4.如何设置StoryBoard中的UICollectionViewController的布局
4.1 在StoryBoard中选中collectionView
4.2 在属性里找到 layout 设置为自定义 custom
4.3 在下面的class里面 把自定义布局的类名写进去即可
![](https://i-blog.csdnimg.cn/blog_migrate/44bc8532510832134e49859295c5c27f.png)
四.网络工具类的封装
1.集成CocoaPods, 并导入AFNetworking框架
1.1 打开终端,进入项目路径下 cd 路径
1.2 创建PodFile文件 pod init
1.3 配置PodFile文件 ,写入要导入的框架
![](https://i-blog.csdnimg.cn/blog_migrate/b1c91d04e54403cca36ba930d8312062.png)
1.4 导入框架 pod install —no-repo-update / 或 pod intall
1.41 pod install 会更新本地库(本地已有的框架也会更新) 速度相对较慢
1.42 pod install —no-repo-update 不会更新本地库,速度相对来说快点
2.封装工具类
2.1 将工具类设计成单例对象
防止别人修改
防止多线程访问,创建多个对象
2.2 swift中单例的设置方式
static let shareInstance : NetworkTools = NetworkTools()
2.3 可以让工具类,直接继承自用到框架的一个类
好处:自己就是这个类的子类,拥有这个类的所有方法和属性,用的时候直接自己就能调用
![](https://i-blog.csdnimg.cn/blog_migrate/654f3d5dec2f6f3a0b77e2639bc14916.png)
3.封装网络请求方法