zoukankan      html  css  js  c++  java
  • 使用uibesizerpath + Cashaplayer画椭圆

    使用uibesizerpath
    Cashaplayer
    画椭圆:

    + (void)drawOvalAnimSourceView:(UIView *)sourceView {
        
        //view是曲线的背景view
        
        UIView *view = [[UIView alloc]initWithFrame:sourceView.bounds];
        
        view.backgroundColor = [UIColor clearColor];
        view.transform = CGAffineTransformMakeRotation(-M_PI_2*0.5);
        [sourceView addSubview:view];
        
        
        //第一、UIBezierPath绘制线段
        
        UIBezierPath *firstPath = [UIBezierPath bezierPathWithOvalInRect:sourceView.bounds];
        
    
        //第二、UIBezierPath和CAShapeLayer关联
        
        CAShapeLayer *lineLayer2 = [CAShapeLayer layer];
        
        lineLayer2.frame = sourceView.bounds;
        
        lineLayer2.fillColor = [UIColor clearColor].CGColor;
        
        lineLayer2.path = firstPath.CGPath;
        
        lineLayer2.strokeColor = [UIColor redColor].CGColor;
        lineLayer2.lineWidth = 10;
        
        
        //第三,动画
        
        CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:NSStringFromSelector(@selector(strokeEnd))];
        
        ani.fromValue = @0;
        
        ani.toValue = @1;
        
        ani.duration = 2.5; // 2快 3慢
        
        [lineLayer2 addAnimation:ani forKey:NSStringFromSelector(@selector(strokeEnd))];
        
        [view.layer addSublayer:lineLayer2];
        
        
        UIImageView *hand = [[UIImageView alloc] initWithFrame:CGRectMake(0, 500, 100, 100)];
    
        hand.image = [UIImage imageNamed:@"img_help_doubletap_00034"];
    
        [view.layer addSublayer:hand.layer];
        
        
        UIBezierPath *aniPath = [UIBezierPath bezierPathWithOvalInRect:sourceView.bounds];
        
        CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
        animation.keyPath = @"position";
        animation.duration = 3;
        animation.repeatCount = 1;//CGFLOAT_MAX;
        animation.path = aniPath.CGPath;
        animation.removedOnCompletion = NO;
        [hand.layer addAnimation:animation forKey:@"slide"];
        
    }
  • 相关阅读:
    [转]: 浅谈Java中的equals和==
    易忘易混的java基本概念
    mysql查看锁表锁进程
    [转] Python 包管理工具解惑
    双网卡单网关的路由问题
    [转]火狐 SSL 收到了一个弱临时 Diffie-Hellman 密钥
    Linux中如何进入减号开头的目录中
    zabbix的一点记录
    从图形界面配置zabbix
    调用API自动配置zabbix version 3.0
  • 原文地址:https://www.cnblogs.com/tufei7/p/9831647.html
Copyright © 2011-2022 走看看