我在 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
添加标签是因为此代码与平台无关。