UIView 滑动过渡淡出

Posted

技术标签:

【中文标题】UIView 滑动过渡淡出【英文标题】:UIView sliding transition fades 【发布时间】:2012-06-06 20:48:43 【问题描述】:

我的一个视图控制器中有一些代码可以从一个视图滑动过渡到另一个视图:

-(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"];

滑动过渡似乎工作正常,但除了滑动之外,我还看到新视图从空白屏幕淡入。我怀疑这是因为我正在向以前不存在的超级视图添加一个新视图。我想做的是同样的事情,但没有淡入。我该怎么做?

【问题讨论】:

核心动画在发生错误或向动画对象传递无效参数时默认为淡入淡出。 【参考方案1】:

我认为 kCATransitionPush 过渡在设计上会同时进行淡入淡出。我可以发誓我记得在某个地方读到过。

使用方法 transitionFromView:toView:duration:options:completion: 构建视图到视图的推送转换非常简单。

为过渡选项传入 UIViewAnimationOptionTransitionNone,然后使用一个动画块将当前视图滑出屏幕,同时将新视图从相反方向滑到屏幕上。

【讨论】:

【参考方案2】:

我对您的问题没有直接的答案,但我发现处理两个视图之间的转换的一种方法是像您一样将新视图添加到您的超级视图,为每个视图截取屏幕截图,实现动画和转换完成后删除两个屏幕截图视图。我更详细地解释了我所做的here 并且效果很好。我认为值得尝试解决您面临的问题。有什么理由不使用 UIView 上的 animateWithDuration 方法?

【讨论】:

以上是关于UIView 滑动过渡淡出的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Bootstrap 3 Carousel 中更改滑动动画以淡入/淡出过渡

UIView 过渡动画

UIView 切换过渡?

UIViewController“后退”过渡期间,UINaviagtionBar 子视图不会淡出

如何在覆盖 UIView 之前停止幻灯片过渡到 Second VC?

iPhone横向UIView幻灯片过渡