uiviewが描くグラフを実装しようとしています。左/右のスライドをアニメーション化するための3つのUIViewがあります。問題は、UIViewアニメーションをキャンセルできないことです。そこで、UIViewをCALayerに置き換えました。さて、問題は、CALayerがこれに適用できるかどうかです。このようにCALayerを描画するのは正常ですか?また、フレームのプロパティを操作するときにCALayerが非常に遅いのはなぜですか。
CGRect frame = curve.frame;
frame.origin.x -= diffX;
[curve setFrame:frame];
代替案はありますか?
PS私はドイツ人です。間違いでごめんなさい。
CATransactionを使用してアニメーションを取得しましたが、次にCABasicAnimationを使用して斧の動きをアニメーション化します。レイヤーの位置が前のxに戻ることを期待しても問題ありません。
CABasicAnimation *theAnimation;
theAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
theAnimation.delegate = self;
theAnimation.duration = 1.0;
theAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
CGPoint position = [[curves objectAtIndex:i]position];
position.x = [[curves objectAtIndex:i]position].x - diffX;
[theAnimation setToValue:[NSValue valueWithCGPoint:position]];
[[curves objectAtIndex:i] addAnimation:theAnimation forKey:[NSString stringWithFormat: @"translate.x.%d", index]];
位置は位置を変更しますが(たとえば、xStart = 100、xEnd = 200)、アニメーションが終了すると、レイヤーは最初のxに戻ります(たとえば、x = 100)。それは正常ですか?終了位置がもう変わらないというこの問題をどのように解決できますか?removeOnCompleteプロパティを変更しようとしましたが、効果がありませんでした。
助けを願っています。
マーカス