为了账号安全,请及时绑定邮箱和手机立即绑定

请问该如何用代码控制看到由点到线的效果呢?

请问该如何用代码控制看到由点到线的效果呢?

潇潇雨雨 2023-05-01 15:11:08
有这么一个需求,需要在UILabel Text上点击之后添加划线效果,就是类似todo done那种。我知道简单的划线就是起点加重点坐标,连接成为一条线,但是如何用代码控制看到由点到线的效果呢?CGContextSetLineWidth(context, 1);CGContextMoveToPoint(context, x, y);CGContextAddLineToPoint(context, x, y);CGContextStrokePath(context);谢谢!
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

主要是这两个方法:

- (void)setupLayers
{    if (animationLayer != nil) {
        [animationLayer removeFromSuperlayer];
    }
    animationLayer = [CALayer layer];
    animationLayer.frame = self.bounds;
    [self.layer addSublayer:animationLayer];    
    CGPoint midLeft = CGPointMake(CGRectGetMinX(animationLayer.bounds), CGRectGetMidY(animationLayer.bounds));    CGPoint midRight = CGPointMake(CGRectGetMaxX(animationLayer.bounds), CGRectGetMidY(animationLayer.bounds));    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:midLeft];
    [path addLineToPoint:midRight];
    
    pathLayer = [CAShapeLayer layer];
    pathLayer.frame = animationLayer.bounds;
    pathLayer.geometryFlipped = YES;
    pathLayer.path = path.CGPath;
    pathLayer.strokeColor = [UIColor blackColor].CGColor;
    pathLayer.lineWidth = 2;
    [animationLayer addSublayer:pathLayer];
}

- (void)startAnimation
{
    [animationLayer removeAllAnimations];
    [pathLayer removeAllAnimations];    
    CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
    pathAnimation.duration = 3.0;
    pathAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
    pathAnimation.toValue = [NSNumber numberWithFloat:1.0f];
    [pathLayer addAnimation:pathAnimation forKey:@"strokeEnd"];
}
查看完整回答
反对 回复 2023-05-03
  • 1 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信