对于下拉的状态,我将其分为三种,然后在初始化的时候,将状态设置为正常状态
并且在初始化的时候,绘制曲线的初始样式
那在手指拖动的过程中,我们该如果实现果冻拉伸的效果呢?
我们需要一个辅助视图centerHelperView,这个辅助视图是加在下面这条线的中间的,如图的小黑点:
然后在取出 centerHelperView 的原点,来不断绘制果冻的曲线
既然我们能够获取到 centerHelperView 在不同时间里的位置,那么我们就可以根据它来绘制我们的曲线
果冻的曲线我们就完成了,然后我们就要开始对手势的状态来进行处理在写控件调试的时候,你可以通过给目标视图添加 UIPanGestureRecognizer ,调用 - translationInView: 来获取到手指在屏幕上拖动时位置的变化,但是下拉刷新控件一般都是加在 ScrollView 上的, ScrollView 自己是有一个只读的 UIPanGestureRecognizer 属性,所以我们不必自己再添加一个,我们只需要观察 UIPanGestureRecognizer 的 state 即可
在取消拖动时,我们根据 ScrollView 的 contentOffset 来判断,是否是取消加载还是加载
进度圆圈的显示主要是依赖于下拉的进度,然后改变progress
,圆圈随之绘制就好
当 progress 达到1之后,就开始旋转动画了,这个我们使用 CABasicAnimation 即可
ok,大功告成~
常用的三方库:
Alamofire 网络请求
ObjectMapper 把json对象映射为model对象。
Kingfisher 开发的处理网络图片及缓存到的库
Snapkit 自动布局框架
SDRefreshView 简单易用的上拉和下拉刷新
SwiftyXMLParser 一个xml解析第三方库
AnyImageKit : 是一个选取与编辑图片的工具套件。
AssertsLibrary : 通过它获取设备里的图片和视频等资料。
PhotoKit : 更好地与设备照片库对接的框架。
CFNetwork: 框架访问网络服务并处理网络配置的变化。
Sprint: 简单实现动画的库 。
SwiftJSON:最为开发者认可的JSON解析类 。
第三方的常用框架 (可参考链接)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)