我的一个视图控制器中有一些代码可以从一个视图滑动到另一个视图:
-(void)transitionToNewView:(UIView*)newView
{
UIView *superView = [self.view superview];
[superView addSubview:newView];
newView.frame = superView.bounds;
[self.view removeFromSuperview];
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[superView layer] addAnimation:animation forKey:@"keygoeshere"];
}
滑动过渡似乎工作正常,但我也看到除了滑动之外,新视图从空白屏幕淡入。我怀疑这是因为我正在为超级视图添加一个以前不存在的新视图。我想做的是同样的事情,但没有消失。我怎么能这样做?
答案 0 :(得分:1)
我认为kCATransitionPush过渡会在设计的同时进行淡出。我发誓,我记得在某个地方读过这篇文章。
使用transitionFromView:toView:duration:options:completion:。
方法构建视图到视图的推送过渡非常简单。传递UIViewAnimationOptionTransitionNone作为转换选项,然后使用动画块在屏幕上滑动当前视图,同时在屏幕上从相反方向滑动新视图。
答案 1 :(得分:0)
我对你的问题没有直接的答案,但我发现处理两个视图之间转换的一种方法是像你一样将新视图添加到你的superview,截取每个视图的截图,实现动画和转换完成后删除两个屏幕截图视图。我更详细地解释了我做了什么here并且效果很好。我认为值得尝试解决您所面临的问题。是否有任何原因你没有在UIView上使用animateWithDuration方法?