Macアプリで、ページコントロールが一部のビューを入れ替える簡単なアニメーション設定があります。必要なページングのようなアニメーションを取得するのに非常に近いですが、少し問題があります。ページングは機能し、新しいページは正しく所定の位置にアニメーション化されますが、アニメーションの前の最初のページも新しいページに置き換えられます。早めに新しいページに変更するのではなく、押し出されているビューを同じままにしていきたいと思います。これは、3秒のアニメーション時間に減速された問題を示すビデオです。コードは次のとおりです。
UASourceView *previousSourceView = [self.sourceViewContainer.subviews objectAtIndex:0];
NSInteger previousIndex = [self.sourceViews indexOfObjectIdenticalTo:previousSourceView];
CATransition *pushTransition = [CATransition animation];
[pushTransition setType:kCATransitionPush];
[pushTransition setSubtype:(previousIndex < index) ? kCATransitionFromRight : kCATransitionFromLeft];
[pushTransition setDuration:PANEL_PAGE_SWIPE_ANIMATION_DURATION];
[pushTransition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[pushTransition setRemovedOnCompletion:YES];
[CATransaction begin];
[self.sourceViewContainer replaceSubview:previousSourceView with:sourceView];
[CATransaction commit];
[sourceView.layer addAnimation:pushTransition forKey:@"push"];
self.sourceViewContainer
すべてのアニメーションで新しいサブビューが置き換えられる固定コンテナビューがあります。上記のように、問題は、previousSourceView
がすぐにに置き換えられsourceView
、同様にプッシュされることです。すぐに交換をやめるのを手伝ってください。どこが間違っているのですか?
*iOS
このコードはプラットフォームに依存しないため、タグが追加されていることに注意してください。