• 使用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"];
        
    }
  • 相关阅读:
    Centos7 系统别名设置
    C#编程 JSON操作
    C#编程 XML文档
    C#编程 socket编程之TcpClient,TcpListener,UdpClient
    C#编程 socket编程之udp服务器端和客户端
    C#编程 socket编程之unity聊天室
    C#编程 socket编程之tcp服务器端和客户端
    C#编程 线程,任务和同步(2) 开启线程
    C#编程 线程,任务和同步(1) 基础认识
    C#编程 LINQ查询
  • 原文地址:https://www.cnblogs.com/tufei7/p/9831647.html
Copyright © 2020-2023  润新知