iOS 下拉刷新动画之--七彩泡泡

先上完整的效果图,😆Gif效果太差将就看看:

效果图

主要是利用CAShapeLayerUIBezierPath,CAEmitterLayer来实现,应为本次重点做的是动画效果

为了节省时间,下拉刷新逻辑就借用了MJRefresh


自定义一个类继承 MJRefreshHeader 支持修改颜色和闲置状态的动画。
默认给了一个😄,大家可以发挥想象。

@interface ZTHeaderRefresh : MJRefreshHeader

@property (nonatomic, strong) UIBezierPath *path;
@property (nonatomic, strong) UIColor *tintColor;

@end

使用方法与MJRefresh相同

 __weak typeof(self) weakSelf = self;
    ZTHeaderRefresh *header = [ZTHeaderRefresh headerWithRefreshingBlock:^{
        [weakSelf requsetData];
    }];
    header.tintColor = [UIColor orangeColor];
//    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 50, 40) cornerRadius:10];
//    header.path = path; 
    self.tableView.mj_header = header;



- (void)requsetData {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self.tableView.mj_header endRefreshing];
    });
}

说一下七彩泡泡的实现效果吧,其实也很简单利用CAEmitterLayer发射器实现

- (CAEmitterLayer *)refreshingLayer {
    if (!_refreshingLayer) {
        _refreshingLayer = [CAEmitterLayer layer];
        _refreshingLayer.renderMode = kCAEmitterLayerAdditive;
        _refreshingLayer.emitterShape = kCAEmitterLayerRectangle;
        _refreshingLayer.emitterCells = @[[self getEmitterCell]];
    }
    return _refreshingLayer;
}

//cell
- (CAEmitterCell *)getEmitterCell
{
    CAEmitterCell *cell = [[CAEmitterCell alloc] init];
    CGFloat colorChangeValue  = 1;
    cell.blueRange = colorChangeValue;
    cell.redRange =  colorChangeValue;
    cell.greenRange =  colorChangeValue;
    
    cell.birthRate       = 5;
    cell.speed           = 5.f;
    cell.velocity        = -20.f;
    cell.velocityRange   = -40.f;
    cell.yAcceleration   = - 20.f;
    cell.emissionRange   = M_PI;
    cell.contents =  (__bridge id )([UIImage imageNamed:@"bubble"].CGImage);
    cell.lifetime        = 15;
    cell.lifetimeRange   = 20;
    cell.scale           = 0.1;
    cell.scaleRange      = 0.3;
    return cell;
}

懒加载一个CAEmitterLayer 配置好cell, bubble 是一个泡泡图片,添加到父View上 。 属性有点多具体含义参考这里

泡泡发射器


支持自定义闲置动画

自定义path

Demo代码已经上传到GitHub 传送门


简单的双层波浪动画效果


一行代码实现第三方登录,分享,支付功能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,224评论 4 61
  • 因为职业的原因,做人力资源久了,就天天琢磨人性是什么,人该怎么激励。特别是自己的孩子现在到了“七岁八岁狗都嫌”的年...
    简单最上乘阅读 277评论 0 3
  • 生命的开端 闵煜与我相识于一九九八年炎热的南台湾。在此之前,我是生活在中国西南端的纳西族女孩,他是长在宝岛...
    yz安静的小耳朵阅读 802评论 3 4
  • 昏暗的灯光下,老鞋匠手中的大针头正在准确的刺向鞋帮子,细细的缝合,严密的扎紧。然后拿起那只自制的鞋垫紧紧的将鞋帮子...
    堕落天使之翼阅读 629评论 0 0
  • 一天天就这样过去了 简简单单 晨光熹微 暖阳穿透过玻璃窗 渐渐地照射在床沿 大梦初醒 伸伸懒腰打个哈欠 美好的一天...
    大姝阅读 234评论 0 0