美文网首页
贝塞尔画脸型

贝塞尔画脸型

作者: 时光浅影 | 来源:发表于2020-04-13 17:35 被阅读0次
@interface ViewController ()<CAAnimationDelegate>
{
    CAShapeLayer *maskLayer;
    CABasicAnimation *_animation;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    {
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithArcCenter:self.view.center radius:80 startAngle:0 endAngle:M_PI clockwise:NO];

    maskLayer = [CAShapeLayer layer];

    maskLayer.backgroundColor = [UIColor clearColor].CGColor;

    maskLayer.path = bezierPath.CGPath;

    maskLayer.strokeColor = [UIColor redColor].CGColor;

    maskLayer.fillColor = [UIColor whiteColor].CGColor;

    maskLayer.lineWidth = 20;

//    maskLayer.fillRule = kCAFillRuleEvenOdd;

    maskLayer.lineCap = kCALineCapRound;

    [self.view.layer addSublayer:maskLayer];

        maskLayer.strokeStart = 0;

    maskLayer.strokeEnd = 1;

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];

    animation.fromValue = @0;

    animation.duration = 3.0f;

    animation.delegate = self;

    [animation setValue:@"BasicAnimationEnd" forKey:@"animationName"];

    [maskLayer addAnimation:animation forKey:@"BasicAnimationEnd"];

    }
}

- (void)animationDidStart:(CAAnimation *)anim{

    if (_animation) {

    UIBezierPath *bezierPath1 = [UIBezierPath bezierPathWithArcCenter:self.view.center radius:30 startAngle:M_PI endAngle:0 clockwise:NO];

    maskLayer = [CAShapeLayer layer];

    maskLayer.backgroundColor = [UIColor clearColor].CGColor;

    maskLayer.path = bezierPath1.CGPath;

    maskLayer.strokeColor = [UIColor redColor].CGColor;

    maskLayer.fillColor = [UIColor whiteColor].CGColor;

    maskLayer.lineWidth = 15;

    maskLayer.fillRule = kCAFillRuleEvenOdd;

    maskLayer.lineCap = kCALineCapRound;

    [self.view.layer addSublayer:maskLayer];

    maskLayer.strokeStart = 0;

    maskLayer.strokeEnd = 1;

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];

    animation.fromValue = @0;

    animation.duration = 0.8f;

    animation.repeatCount = 0;

    [animation setValue:@"BasicAnimationEnd" forKey:@"animationName"];

    [maskLayer addAnimation:animation forKey:@"BasicAnimationEnd"];

        
        
    }else{

    UIBezierPath *bezierPath1 = [UIBezierPath bezierPathWithArcCenter:self.view.center radius:60 startAngle:M_PI endAngle:0 clockwise:NO];

    maskLayer = [CAShapeLayer layer];

    maskLayer.backgroundColor = [UIColor clearColor].CGColor;

    maskLayer.path = bezierPath1.CGPath;

    maskLayer.strokeColor = [UIColor yellowColor].CGColor;

    maskLayer.fillColor = [UIColor whiteColor].CGColor;

    maskLayer.lineWidth = 20;

    maskLayer.fillRule = kCAFillRuleEvenOdd;

    maskLayer.lineCap = kCALineCapRound;

    [self.view.layer addSublayer:maskLayer];

    maskLayer.strokeStart = 0;

    maskLayer.strokeEnd = 1;

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];

    animation.fromValue = @0;

    animation.duration = 2.0f;

    animation.repeatCount = 0;

    [animation setValue:@"BasicAnimationEn" forKey:@"animationName"];

    [maskLayer addAnimation:animation forKey:@"BasicAnimationEn"];

    }
    
}

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{

    if (!_animation) {
        CGPoint center = self.view.center;
        CGFloat x = center.x;
        CGFloat y = center.y;

    UIBezierPath *bezierPath2 = [UIBezierPath bezierPathWithArcCenter:CGPointMake(x-15, y-30) radius:5 startAngle:0 endAngle:M_PI * 2 clockwise:YES];

    maskLayer = [CAShapeLayer layer];

    maskLayer.backgroundColor = [UIColor clearColor].CGColor;

    maskLayer.path = bezierPath2.CGPath;

    maskLayer.strokeColor = [UIColor blackColor].CGColor;

    maskLayer.fillColor = [UIColor whiteColor].CGColor;

    maskLayer.lineWidth = 5;

    [self.view.layer addSublayer:maskLayer];

    maskLayer.strokeStart = 0;

    maskLayer.strokeEnd = 1;

    _animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];

    _animation.fromValue = @0;

    _animation.delegate = self;

    _animation.duration = 1.0f;

    [_animation setValue:@"BasicAnimationEnd" forKey:@"animationName"];

    [maskLayer addAnimation:_animation forKey:@"BasicAnimationEnd"];

        {
            CGPoint center = self.view.center;
            CGFloat x = center.x;
            CGFloat y = center.y;

        UIBezierPath *bezierPath_right = [UIBezierPath bezierPathWithArcCenter:CGPointMake(x
                                                                                           +15, y-30) radius:5 startAngle:0 endAngle:M_PI * 2 clockwise:NO];

        maskLayer = [CAShapeLayer layer];

        maskLayer.backgroundColor = [UIColor clearColor].CGColor;

        maskLayer.path = bezierPath_right.CGPath;

        maskLayer.strokeColor = [UIColor blackColor].CGColor;

        maskLayer.fillColor = [UIColor whiteColor].CGColor;

        maskLayer.lineWidth = 5;

        [self.view.layer addSublayer:maskLayer];


        _animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];

        _animation.fromValue = @0;

        _animation.delegate = self;

        _animation.duration = 1.0f;

        [_animation setValue:@"BasicAnimationEnd" forKey:@"animationName"];

        [maskLayer addAnimation:_animation forKey:@"BasicAnimationEnd"];

            
        }
    }

}
Simulator Screen Shot - iPhone 11 Pro Max - 2020-04-13 at 17.36.01.png

相关文章

网友评论

      本文标题:贝塞尔画脸型

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