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"];
        
    }
  • 相关阅读:
    滑动窗口法学习
    209. Minimum Size Subarray Sum
    485. Max Consecutive Ones
    27. Remove Element
    167. Two Sum II
    561. Array Partition I
    344. Reverse String
    14. 最长公共前缀
    layui上传文件时出现 请求上传接口出错
    Linux-5.13将初步支持苹果M1 Soc
  • 原文地址:https://www.cnblogs.com/tufei7/p/9831647.html
Copyright © 2011-2022 走看看