UILabel 划线动画

发布于 2022-08-25 01:27:29 字数 273 浏览 14 评论 0

有这么一个需求,需要在UILabel Text上点击之后添加划线效果,就是类似todo done那种。
我知道简单的划线就是起点加重点坐标,连接成为一条线,但是如何用代码控制看到由点到线的效果呢?

CGContextSetLineWidth(context, 1);
CGContextMoveToPoint(context, x, y);
CGContextAddLineToPoint(context, x, y);
CGContextStrokePath(context);

谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

关于从前 2022-09-01 01:27:29

代码在这里:https://github.com/driventokill/DelLi...
主要是这两个方法:

- (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"];
}

Screen-Shot-2013-04-12-at-4.53.59-PM.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文