美文网首页iOS 道路之行iOS学习好东西
iOS 下拉刷新动画之--七彩泡泡

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

作者: zhengtao | 来源:发表于2017-06-09 09:30 被阅读598次

    先上完整的效果图,😆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 传送门

    简单的双层波浪动画效果


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

    相关文章

      网友评论

      • 春暖花已开:不错,点赞!学习了!谢谢分享~:relieved:
        Mr卿:@人民重重 蛮不错的 加个天空背景 放个 氢气球的图片 简直了
        Mr卿:能借用下么。。。
        zhengtao:@人民重重 互相学习~

      本文标题:iOS 下拉刷新动画之--七彩泡泡

      本文链接:https://www.haomeiwen.com/subject/lsuxqxtx.html