同時に開始し、同じ曲線を使用する 2 つのコア アニメーションを作成しようとしていますが、条件が満たされた場合、そのうちの 1 つを停止する必要があります。たとえば、左側に次のビューがあり、右側のビューに移行したいと考えています。
赤色のビューは、最初は交差していなくても、黄色のビューの上のオーバーレイとして扱うことができます。「項目 3」をクリックすることを想像してください。私がする必要があるのは、距離を置いてすべての行の動きを上にアニメーション化することですが -item3.frame.origin.y
、title3
画面の一番上に到達するとそこに留まるため、残りの行item1
item2
は後ろにスライドしているように見えますtitle3
オプションでコアアニメーションを使用してすべての要素をアニメーション化しようとしました:UIViewAnimationsOptionLayoutSubviews
そしてlayoutSubview
、次のコードでアニメーションを停止します:
-(void)layoutSubviews {
CALayer* presentationLayer = (CALayer*)[self.title3.layer presentationLayer];
if (presentationLayer.frame.origin.y <= 0) {
[self.title3.layer removeAllAnimations];
}
}
しかし、何の成功もありません。コア アニメーションを使用し、モックを作成せずに機能させる方法はありますかCADisplayLink
。title3 アニメーションの継続時間は計算が難しく、アニメーション曲線が線形でない場合にtitle3
との間にギャップが生じるため、2 つの別々のアニメーションを使用することはできません。title2