2013-04-22 16 views
5

私は、CALayerをCABasicAnimationでアニメーション化していて、アニメーションが完了したときにそのレイヤーを維持することを期待しています。ほぼすべてのソリューションはCABasicAnimationで消えるレイヤーを防ぐ正しい方法はありますか?

animation.removedOnCompletion = NO; 
animation.fillMode = kCAFillModeForwards; 

しかしうまく動作以下、練習パート1でのCore Animation 2010年WWDCスピーカー(〜38-41mins)が見つかり消失層へのソリューションのほとんどが「あると言うが表示さ偽」と層をアニメーション化するための正しい方法は、大きく分けて与えられた理由はremovedOnCompletion/FILLMODE溶液のみプレゼンテーション層を凍結し、そして実際の層は依然として元の位置が設定されていることである

animation.fromValue = [NSNumber numberWithFloat:layer.position.y]; 
layer.position = CGPointMake(layer.position.y, endPoint); 
animation.toValue = [NSNumber numberWithFloat:endPoint]; 

に従っています。

私が話し手を誤解した場合は、私を修正してください。

私が彼を正しく理解していれば、いつ問題になるのですか?

ありがとう、スティーブ

答えて

2

あなたのやりたいことに依存します...自分の説明はかなり明確です。

実際の値を変更せずにプロパティをアニメートするだけの場合、「見えるもの」は実際には「もの」とは異なります。ほとんどの場合、あなたはそれを望んでいません。 UIViewのアニメーション、またはCALayerの暗黙のアニメーションを使用すると、「ものは何か」と「見えるもの」が同期されます(ダイレクトセッターの構文と一貫しています)。

しかし、場合によっては、実際の価値を保持し、一時的に何かを画面上に表示することができます。あなたがしていることを知っている限り!

+0

応答のおかげで - 申し訳ありませんが、私のここでは少し遅かったです。私は多分、プレゼンテーションレイヤーまたは実際のレイヤーを使って何かを行う必要があります。これは2つの方法で苦労しました。再度、感謝します。スティーブ – Steve

1

あなたは正しく理解しています。

レイヤー上でアニメーションを作成すると、「プレゼンテーションレイヤー」と呼ばれる「特別な」レイヤーが作成され、アニメーションが実際に作成されたものの、実際のレイヤーは変更されません。実際には、最後のアニメーションステータスでレイヤーを「同期させる」ために、アニメーションの終わりにレイヤーにプロパティを設定する必要があります。

関連する問題