自定义刷新控件

1.自定义刷新控件 -控制逻辑

  • 创建JYRefreshControl 基于UIControl 控制逻辑判断

2.自定义刷新控件视图 -控制界面显示或者动画

  • 创建XIB实现UI view布局,通过control 得到父视图高度控制view的变化

3. JYRefreshControl

  • 初始化init方法,创建UI,此时没有设置高度,没有frame

  • 创建scrollview 记录父视图

  • 创建refreshView负责视图展示

    init(){
        super.init(frame: CGRect())
        setupUI()
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder);
        setupUI()
    }
    复制代码

  • 设置刷新状态的枚举

  • 重写父类的方法willMove toSuperView 上记录父视图,添加观察者

  • 重写父类的移除视图的时候移除观察者

  • 实现KVO 方法,根据监听到的父视图的滑动,设置view的frame,把高度传到refreshView中

  • 根据滑动的高度,设置frame

  • 在拖拽的时候进行状态判断

  • 不在拖拽的时候,状态是拖拽了,松手刷新,状态设置为刷新,执行beginRefreshing

  • beginRefreshing() 方法

  • endRefreshing() 方法

4.JYNomalRefreshView

  • init 方法 加载loadnib 方法

  • nibName 可以是子类,通过nibName 的改变切换不同的显示内容,在View 的拖出来的视图,是可选的,子类不一定有

  • 在state的didset方法中设置UI

  • ios 中旋转动画默认是 1.顺时针的旋转, 2.就近原则

  • 实现同方向旋转,减少一个极小的值

  • 如果旋转360,使用CABaseAnimation动画

5.刷新动画

  • awakeFromNib() 进行动画的执行

  • 通过2张图片合成,实现1张GIF效果

  • 使用CABasicAnimation 动画实现无限旋转

  • 实现CGAffineTransform缩放动画,设置layer的锚点,先设置center,或者frame,再设置锚点,

转载于:https://juejin.im/post/5b8f8de9e51d450e7825cca9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值