1

iOSでは、線分オブジェクトを作成し、その開始点と終了点をアニメーション化したいと思います(これは、MicrosoftのWPFで実行できます)。

現在、変換を使用してCALayerストレッチおよび回転する小さなオブジェクトとして線分オブジェクトを作成しています。

+(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;
}

変換を変更することで、この線分をアニメートできます。

これは半ばうまく機能しますが、完全ではありません。アニメーション中、エンドポイントが直線に従わないためです。したがって、アニメーション化できる線分オブジェクトを作成するためのより良い方法があるかどうか疑問に思います。

4

1 に答える 1

3

CAShapeLayerを使用して、2つのコントロールポイントのみを含むCGPathを作成できます。CAShapeLayer自体のパスプロパティは実際にはアニメート可能であり(新しいパスに同じ数のポイントがある限り)、さらにCALayerのすべての変換機能を利用できます。そして、トミーがちょうど述べたように、あなたはいくつかのかなりクールなアニメーションで遊ぶことができます(それはうまくアニメーション化するものもありstrokeStart ますが、私はあなたがそれを必要としないと思います)。strokeEndlineDashPatternlineDashPhase

この質問のコードサンプル:

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);
于 2013-03-01T21:10:54.500 に答える