gpt4 book ai didi

ios - iOS中的动画线段

转载 作者:行者123 更新时间:2023-12-01 19:12:58 25 4
gpt4 key购买 nike

在 iOS 中,我想创建一个线段对象并为其起点和终点设置动画(我可以在 Microsoft 的 WPF 中做到这一点)。

目前,我将线段对象创建为微小的 CALayer我使用变换拉伸(stretch)和旋转。

+(LayLine*) layLineWithStartPoint:(CGPoint)ptStart andEndPoint:(CGPoint)ptEnd{
LayLine* line = [[LayLine alloc] init];
line.backgroundColor = [UIColor blackColor].CGColor;
line.frame = CGRectMake(0,-1,1,2); // Line 1 pixel long and 2 pixel wide line segment
line.anchorPoint = CGPointMake(0,0);

line.affineTransform = [LayLine affineTransformationForLineSegment:ptStart to:ptEnd];
return line;
}

我可以通过改变它的变换来动画这条线段。

这工作得很好,但并不完美,因为在动画期间,端点并不像我想要的那样沿着直线。因此,我想知道是否有更好的方法来创建可以动画的线段对象?

最佳答案

您可以使用 CAShapeLayer并创建一个仅包含两个控制点的 CGPath。 CAShapeLayer 本身的路径属性实际上是可动画的(只要新路径具有相同数量的点)加上您获得 CALayer 的所有变换功能。而作为 Tommy刚刚提到,你可以玩strokeStartstrokeEnd对于一些非常酷的动画(还有lineDashPatternlineDashPhase 很好地动画,但我想你不需要那个)。

来自 this question 的代码示例:

CAShapeLayer *lineShape = nil;
CGMutablePathRef linePath = nil;
linePath = CGPathCreateMutable();
lineShape = [CAShapeLayer layer];

lineShape.lineWidth = 1.0f;
lineShape.lineCap = kCALineJoinMiter;
lineShape.strokeColor = [[UIColor redColor] CGColor];

CGPathMoveToPoint(linePath, NULL, x, y);
CGPathAddLineToPoint(linePath, NULL, toX, toY);

lineShape.path = linePath;
CGPathRelease(linePath);

关于ios - iOS中的动画线段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com