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"];
        
    }
  • 相关阅读:
    用sed删除空行
    烂泥:php5.6源码安装及php-fpm配置
    linux系统vsftpd登陆慢卡怎么办
    Linux Vsftpd 连接超时解决方法
    linux中shell截取字符串方法总结
    运算符
    数据类型
    is null 和=null的区别
    DML
    DDL
  • 原文地址:https://www.cnblogs.com/tufei7/p/9831647.html
Copyright © 2011-2022 走看看