CAShapeLayerのパスの値を楕円から矩形に変更する明示的なアニメーションを作成するときに問題が発生しています。私のキャンバスコントローラのIセットアップでCAShapeLayerパスのグリッチ/フリッカーのアニメーション化(楕円から矩形および背面へ)
基本CAShapeLayerとルートビューのレイヤに追加します。次に
CAShapeLayer *aLayer;
aLayer = [CAShapeLayer layer];
aLayer.frame = CGRectMake(100, 100, 100, 100);
aLayer.path = CGPathCreateWithEllipseInRect(aLayer.frame, nil);
aLayer.lineWidth = 10.0f;
aLayer.strokeColor = [UIColor blackColor].CGColor;
aLayer.fillColor = [UIColor clearColor].CGColor;
[self.view.layer addSublayer:aLayer];
、私はパスをアニメーション化するとき、私は最後の数フレームで奇妙なグリッチ/ちらつきを取得形状が矩形になるときのアニメーション、最初の数フレームでは矩形からアニメーション化されます。次のようにアニメーションが設定されている:
CGPathRef newPath = CGPathCreateWithRect(aLayer.frame, nil);
[CATransaction lock];
[CATransaction begin];
[CATransaction setAnimationDuration:5.0f];
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"path"];
ba.autoreverses = YES;
ba.fillMode = kCAFillModeForwards;
ba.repeatCount = HUGE_VALF;
ba.fromValue = (id)aLayer.path;
ba.toValue = (__bridge id)newPath;
[aLayer addAnimation:ba forKey:@"animatePath"];
[CATransaction commit];
[CATransaction unlock];
私はなど、さまざまなフィルモードで遊んで、CATransactionをロック/アンロックのような多くの異なるものを試してみました...
をここでグリッチのイメージがあります: http://www.postfl.com/outgoing/renderingglitch.png
私が経験しています何のビデオはここで見つけることができます: http://vimeo.com/37720876
あなたの回答と私がDavid Duncanから投稿した回答の間には、何が起こっているかについてかなり良い感覚があります。うまくいけば、将来のリリースでは、アニメーション可能なパスのプロパティが良くなるでしょう。 –
アーク矩形の手法を使って作業している場合は、ここに投稿してください! – jrturton
あなたがこれに取り組んだのか、この投稿がなされてから良い答えが見られたのか分かりません。私は、ポリゴンアニメーションの一般的な円で作業を始めています。現在は、アニメーションを四角形にするために円で作業しています。私は、この質問への答えとして、このコードを投稿しました。http://stackoverflow.com/questions/28437014/animating-between-two-bezier-path-shapes/28448397#28448397 – rdelmar