首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自定义UINavigationController动画:CATransition

自定义UINavigationController动画:CATransition

UINavigationController是iOS应用中常用的导航控制器,它可以实现页面的堆栈式导航,并提供了默认的转场动画。但有时候我们需要自定义导航控制器的转场动画,这时可以使用CATransition类来实现。

CATransition是一个核心动画类,可以实现各种转场动画效果。下面是一个使用CATransition自定义UINavigationController转场动画的示例代码:

代码语言:swift
复制
func pushViewControllerWithCustomAnimation(viewController: UIViewController) {
    let transition = CATransition()
    transition.duration = 0.3
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromRight
    navigationController?.view.layer.add(transition, forKey: nil)
    navigationController?.pushViewController(viewController, animated: false)
}

func popViewControllerWithCustomAnimation() {
    let transition = CATransition()
    transition.duration = 0.3
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromLeft
    navigationController?.view.layer.add(transition, forKey: nil)
    navigationController?.popViewController(animated: false)
}

在这个示例中,我们定义了两个方法:pushViewControllerWithCustomAnimationpopViewControllerWithCustomAnimationpushViewControllerWithCustomAnimation方法用于将一个视图控制器推入导航控制器的堆栈中,并使用自定义的转场动画。popViewControllerWithCustomAnimation方法用于将当前视图控制器从导航控制器的堆栈中弹出,并使用自定义的转场动画。

在这两个方法中,我们都创建了一个CATransition对象,并设置了动画的持续时间、时间函数、类型和子类型。然后,我们将这个CATransition对象添加到导航控制器的视图层中,并执行相应的转场操作。

这样,我们就可以使用自定义的转场动画来实现UINavigationController的页面跳转效果了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CAAnimation 核心动画概念一、 CAAnimation二、 CAPropertyAnimation三、CABasicAnimation(基本动画)CAPropertyAnimation的子类

属性: duration:动画的持续时间,默认为0.25秒 repeatCount:动画的重复次数 repeatDuration:动画的重复时间 removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除...属性: animations:动画组,用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间 例子: /...anim.animations = @[anim1, anim2, anim3]; ---- 六、CATransition(转场动画)CAAnimation的子类 用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果...UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 属性: type:设置动画过渡的类型 枚举: kCATransitionFade...创建一个转场动画对象 CATransition *anim = [[CATransition alloc] init]; // 设置转场动画的类型 anim.type = @"suckEffect

1.9K90
  • 玩转iOS转场动画

    二、UIViewController进行模态跳转的转场     首先,使用CoreAnimation框架中的CATransition类也可以实现视图控制器的转场动画,前面的博客有过讨论,这里不再重复。...,我们可以使用UIViewControllerTransitioningDelegate协议来完全自定义想要的转场动画效果。    ...[transitionContext completeTransition:YES]; }]; } 上面我们实现了一个简单的自定义转场动画,将present动画修改成了从右侧滑入...三、导航转场动画自定义     导航转场动画的原理与模态跳转转场动画的原理基本是一致的,不同的我们需要设置UINavigationController实例的delegate为遵守UINavigationControllerDelegate...四、UITabBarController的转场动画     UITabbar也可以进行转场动画自定义,需要设置UITabBarController的delegate并实现协议中的如下两个函数: //设置非交互的转场动画

    1.3K51

    【jQuery动画】停止动画、淡入淡出、自定义动画

    ‍ 哈喽大家好,本次是jQuery案例练习系列第四期 ⭐本期是jQuery动画——停止动画、淡入淡出、自定义动画 系列专栏:前端案例练习 笔者还是前端的菜鸟,还请大家多多指教呀~ 欢迎大佬指正...---- 文章目录 停止动画 动画队列 stop()方法 stop()方法的常用方式 淡入淡出动画 淡入淡出方法 显示效果 HTML CSS jQuery 自定义动画 animate()语法 代码演示...通过此方法,可以让动画队列后面的动画提前执行。 stop()方法 stop()方法适用于所有的jQuery效果,包括元素的淡入淡出、自定义动画等。...jQuery中提供了animate()方法让用户可以自定义动画。...IE=edge" /> 自定义动画

    2.5K20

    iOS动画-CAAnimation使用详解

    基类 5.基础动画CABasicAnimation 6.关键帧动画CAKeyframeAnimation 7.动画组CAGroupAnimation 8.过渡动画CATransition 9....;于是就有了过渡的概念; 过渡动画使用CATransition来实现,它同样是CAAnimation的子类;它并不像属性动画那样在平滑的两个值之间做动画,而是影响到整个图层的变化。...CATransition.gif 注意:和属性动画不同,对指定图层一次只能使用那一次CATransition,因此无论对动画的键设置为什么值,过渡动画都会对它的键设置为”transition”,也就是常量....对于视图关联的图层,过渡动画的默认效果是禁用的; 2.我们不能错误的理解CATransition只可以改变非动画属性,其实它也可以对类似backgroundColor的属性做过渡效果动画; 5.自定义过渡动画...如果我们知道如何对图层截图,我们就可以使用属性动画自定义CATransition动画了。

    2.3K10

    自定义View(三)-动画-属性动画ValueAnimator

    前言 之前我们把视图动画(也就是View动画)分析的差不多了,当然帧动画我们没有讲解,其实帧动画比较简单,就是通过顺序播放一系列的图像从而产生动画效果,可以简单理解为图片的切换。...这篇我们继续来学习动画之属性动画(Property Animator)。 ---- 介绍 我们在第一篇文章的时候就提到过动画的分类:视图动画,属性动画。当时我们讲解了2者的区别。...并且已经有了View动画,为何有加入属性动画呢? Property Animator能实现补间动画无法实现的功能 ; 比如我们想将一个控件的宽度增加,用动画来这么做呢?...View动画之所以叫视图动画,因为它做动画是对控件的视图,影像做动画,并没有改变控件的属性。所以当我们用视图做动画完成后造成点击事件与setVisibility(View.GONE)失效。...Android自定义控件三部曲文章

    1.3K31

    Flutter动画自定义动画组件-FlutterLayout

    前言: 本文将自定义一个FlutterWidget的动画组件,Flutter有颤动的意思 在此之前会讲一下AnimatedWidget与AnimatedBuilder是什么,如何使用 所以本文是一篇挺重要的文章...milliseconds: 1000), vsync: this); animation = TweenSequence([//使用TweenSequence进行多组补间动画...,它不在意组件是什么,只是将动画抽离达到复用简单 这样针对不同的组件,都可以产生同样的动画效果,比如传入一个Image ?...(milliseconds: 1000), vsync: this); animation = TweenSequence([ //使用TweenSequence进行多组补间动画...return modes[random.nextInt(3)]; } } 复制代码 ---- 2.5:使用MultiShower测试一下 关于MultiShower,可以看一下Flutter自定义组件

    1.9K20

    iOS Core Animation:Advanced Techniques

    在这一章中,我们将要研究一下显式动画,它能够对一些属性做指定的自定义动画,或者创建非线性动画,比如沿着任意一条曲线移动。...为了创建一个过渡动画,我们将使用CATransition,同样是另一个CAAnimation的子类,和别的子类不同,CATransition有一个type和subtype来标识变换效果。...这里用到了一个小诡计,要确保CATransition添加到的图层在过渡动画发生时不会在树状结构中被移除,否则CATransition将会和图层一起被移除。...但是这里的可用的过渡选项和CATransition的type属性提供的常量完全不同。 但这并不意味着在iOS上就不能实现自定义的过渡效果了。这只是意味着你需要做一些额外的工作。...的限制,创建完全自定义的缓冲函数。

    1.8K30

    VCTransitionsLibrary –自定义iOS交互式转场动画的库

    ”互动控制器”,你可以直接使用这些控制器来和自定义动画效果配合使用;而不是自己控制去控制交互....使用 在自定义转场动画时,有两类关键的类: 动画控制器 –  这个类是用来实现自定义动画的.但你声明想要使用自定义动画时,你应该提供一个动画控制器.这个类会实现需要的动画,完成时会通知框架....注意: 动画和交互是完全独立的,这意味着你可以在其他任何自定义控制器上独立使用交互控制器-很酷!...使用动画控制器 AnimationControllers 文件夹中提供了许多可以整合进你的工程中的动画控制器: 自定义模态控制器显示/隐藏的动画 UIViewControllerTransitioningDelegate...自定义顶部导航的转场动画 UINavigationController 有一个 id delegate 属性.只需要让它的代理通过 navigationController

    1.6K60

    自定义View(二)-动画- 代码生成View动画

    前言 上篇我们介绍了视图动画,说的确切点应该是视图动画中的补间动画(Tween Animation),关于逐帧动画(Frame Animation)用法更简单,这里先不做介绍后期再自定义View的使用会用到...这篇我们来一起学习将上篇用XML实现的动画用试着用代码来生成,毕竟有些时候我们是用代码来控制动画的。...---- 实战 View动画讲到这基本上也就差不多了,那么我们用个小例子在实际中运用一下。 下面这个例子就是百篮应用中Activi ty进入与退出动画。我们就可以用我们学到的View动画来去实现。...->当前Activity向右退出 由完全可见变成完全不可见 即将进入的Activity反之 那么此时就是两个动画->从右退出,从左进入 那么就清楚了这里应该有四个动画,每个动画为组合动画:平移与渐变...---- 结语 下一篇我们一起来学习一下属性动画。 我们下篇见 感谢 站在巨人的肩膀上可以让我们看的更远。 Android自定义控件三部曲文章

    54810

    自定义View(一)-动画- XML生成View动画

    ---- 结语 本文的很多内容都是借鉴于Android自定义控件三部曲文章,这个系列文章就像一本书一样,让我在学习自定义View的时候给了我很大的帮助。所以在我写的时候会借鉴很多他的内容。...学习自定义View是一个漫长的路。我也是边学边总结。...我觉得要学好自定义View应该这样: 动画-->画笔-->画布-->View的绘制流程-->事件分发-->自定义View-->自定义布局-->drawable...这只是一个学习的过程,还需要大量的学习好的自定义...优秀博客以及文章: Android自定义控件三部曲文章 Android开发艺术探索 这本书我现在还没看是开只是大致阅读了下 发现里面涉及到大量的自定义View知识后续会总结精华提取到文章中 程序员的自我反思...他里面有许多关于自定义View的文章 带你一步步深入了解View Android 自定义控件之起步

    83710

    IOS开发系列——UIView专题之二:动画篇【整理,部分原创】

    但是须知:CATransition只针对图层,不针对视图。图层是Core Animation与每个UIView产生联系的工作层面。...使用CATransition类实现动画,只需要建立一个Core Animation对象,设置它的参数,然后把这个带参数的过渡添加到图层即可。...使用要引入QuartzCore.framework代码 #import 示例代码: CATransition *transition = [CATransition animation]; transition.duration...另外,CATransition私有的动画类型有(立方体、吸收、翻转、波纹、翻页、反翻页、镜头开、镜头关)。...+ (Class)layerClass 返回值 一个用来创建视图layer的类 讨论 重写子类来指定一个自定义类用来显示。当在创建视图layer时候调用。默认的值是CALayer类对象。

    1.4K10

    iOS中的转场动画

    本篇博客中的动画动画中的一种--转场动画CATransition)。 1.为导航控制器添加动画。...然而有些项目在一个控制器push到下一个控制器的时候却需要添加一些特殊的动画效果。如何添加这些特殊动画呢?我们实际是将这些动画添加到了控制器的视图图层上。...看代码: CATransition * transition = [CATransition animation]; /*      pageCurl            向上翻页      pageUnCurl...为切换视图添加动画 有时我们在切换两个视图的时候也需要添加动画,实际动画还是添加在了图层上了。切换的两个视图是添加在同一个视图控制器的view上的。...: CATransition *animation = [CATransition animation];     animation.delegate = self;     animation.duration

    1.4K20

    自定义动画怎么学

    前面讲了如何学习自定义View,今天来继续渡劫——如何学习自定义动画。...渡劫心法 自定义View是学好自定义动画的基础,如果你已经顺利渡过前面几个大劫,那么现在,你就可以好好想想了,怎么来进阶自定义动画。...这简单的原理,却蕴含着自定义动画最深层次的奥义,一定要好好体会。.../learn/263 属性动画赏析 第十劫数学数学 其实自定义动画和View做到这里,几乎已经没有什么难的了,唯一阻挡你突破极限的,唯有——数学。...写到这里,自定义View和自定义动画的精髓基本上就讲完了,总得来说,这两件事是最好装逼的东西,毕竟展示效果最容易抢眼球,而且也不难,只要你静下心好好分析,而不是畏首畏尾,想找个现成的抄抄。

    54240
    领券