UIView 过渡动画

Posted

技术标签:

【中文标题】UIView 过渡动画【英文标题】:UIView transition animation 【发布时间】:2014-06-20 04:56:14 【问题描述】:

ViewBViewCViewA 的子视图。假设ViewB 当前位于ViewC 之上。我想用翻转动画将ViewC 放在顶部,如图所示。我使用UIView 类方法(void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion。但是,ViewAviewB 一起翻转,这不是所需的行为。所需的行为只是让ViewB 翻转并且ViewC 现在位于顶部。知道如何实现所需的行为吗?

【问题讨论】:

你能贴出实际的代码吗,你用什么来查看和查看..? 一个简单的解决方法(不更改代码)是在执行transitionFromView:toView:duration:options:completion: 之前将两个视图分组到另一个与它们具有相同大小的“容器”视图中。此外,如果您只想显示/隐藏视图(而不是在层次结构中添加/删除它们),您可以在选项中添加 UIViewAnimationOptionShowHideTransitionViews @allainian,这解决了我的问题。谢谢!!! 【参考方案1】:

试试这个:

 -(void)FilpAnimation
    
        viewObjB.alpha=1.0;
        viewObjB.hidden=NO;
        [UIView transitionWithView:viewObjB
                          duration:1.5
                           options:UIViewAnimationOptionTransitionFlipFromRight
                        animations:^
                            viewObjB.hidden=YES;
                            viewObjB.alpha=0.0;
                         completion:nil];

        viewObjC.alpha=0.0;
        viewObjC.hidden=YES;
        [UIView transitionWithView:viewObjC
                          duration:1.5
                           options:UIViewAnimationOptionTransitionFlipFromLeft
                        animations:^
                            viewObjC.hidden=NO;
                            viewObjC.alpha=1.0;
                         completion:nil];    
    

【讨论】:

感谢您的回复。我实施了@Alladinian 的建议,但我认为你的建议也可以。

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

UIView 动画过渡卷曲与透明背景

UIView.animateKeyframes 跳转到下一个动画的开始而不是平滑过渡

通过将 UIView 过渡添加到 UIStackView 来制作动画

在 2 个 UIViewController 的过渡之间为 UIView 元素设置动画

同时 UIViewController 过渡动画

UIView动画