CATransition自定义UIViewController过渡动画

CATransition

CATransition是CAAnimation的子类,可以通过设置type和subtype实现简单的过渡动画。

type类型:

/* Common transition types. */

CA_EXTERN NSString * const kCATransitionFade
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionMoveIn
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionPush
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionReveal
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

也可以直接用@“fade”,@"moveIn",@"push",@"reveal"代替,除了这四种还有:@“pageCurl”,@"cube",@"flip"等等。

subtype类型:

/* Common transition subtypes. */

CA_EXTERN NSString * const kCATransitionFromRight
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionFromLeft
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionFromTop
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionFromBottom
    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

也可以直接使用对应的字符串:@”fromRight“,@"fromLeft",@"fromTop",@"fromBottom"

Present类型过渡动画

设置animated为NO,并将动画添加在self.view.window.layer上

/*** CATransition ***/
//CATransition
- (CATransition *)transition
{
    CATransition *transition = [CATransition animation];
    transition.duration = 1;
    transition.type = @"cube";
    transition.subtype = @"fromRight";
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    return transition;
}

- (void)onClick:(id)sender
{
    ViewController2 *vc2 = [[ViewController2 alloc] init];
    [self presentViewController:vc2 animated:NO completion:nil];
    [self.view.window.layer addAnimation:[self transition] forKey:@"kTransitionAnimation"];
}

Push类型过渡动画

设置animated为NO,并将动画添加在self.view.window.layer或者self.navigationController.view.layer上

/*** CATransition ***/
//CATransition
- (CATransition *)transition
{
    CATransition *transition = [CATransition animation];
    transition.duration = 1;
    transition.type = @"cube";
    transition.subtype = @"fromRight";
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    return transition;
}

- (void)onClick:(id)sender
{
    ViewController2 *vc2 = [[ViewController2 alloc] init];
    [self.navigationController pushViewController:vc2 animated:NO];
    [self.view.window.layer addAnimation:[self transition] forKey:@"kTransitionAnimation"];
    // or [self.navigationController.view.layer addAnimation:[self transition] forKey:kTransitionAnimation];
}

时间: 2024-12-30 03:38:31

CATransition自定义UIViewController过渡动画的相关文章

iOS开发中CATransition过渡动画的类型

移动开发过程中, 动画是必不可少的,有了动画,仿佛我们的程序有了生命一样.动画可以让我们的程序界面变化更流畅, 而不是很突兀的感觉.今天,就说一下CATransition过渡动画. 我们先看一下过渡动画的代码实现: <span style="white-space:pre"> </span>// 创建 CATransition *transition = [CATransition animation]; transition.duration = 2; //

CATransition过渡动画

移动开发过程中, 动画是必不可少的,有了动画,仿佛我们的程序有了生命一样.动画可以让我们的程序界面变化更流畅, 而不是很突兀的感觉.今天,就说一下CATransition过渡动画. 我们先看一下过渡动画的代码实现: [objc] view plaincopyprint? <span style="white-space:pre"> </span>// 创建 CATransition *transition = [CATransition animation];

指纹解锁以及自定义转场动画

这两天工作不忙,就去研究了下指纹解锁以及转场动画,其实这里面的单单一个动画就可以说半天了,但是今天不去说动画.这个以后有时间在讲讲.. 指纹解锁,很简单,官方文档上说的很清楚,其实我们要做的几乎没有.. 1.导入 #import <LocalAuthentication/LocalAuthentication.h> 这个框架 2.导入下面那段代码,指纹解锁就完成了, so easy!!!!然后再实现自己大逻辑就可以了.. LAContext *myContext = [[LAContext a

iOS 利用UIPresentationController自定义转场动画

1. 系统默认modal出来的动画效果默认是从屏幕底部爬出来的 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ secondVC *second = [[secondVC alloc] init];  [self presentViewController:second animated:YES completion:nil]; } 2. 想自定义转场动画,首先设置 展示样式 和 过渡代理 secondVC *s

iOS 自定义转场动画篇

前言: 自定义转场动画其实并不难, 关键在于能够明白思路, 也就是操作步骤. 本篇博客主要以present转场动画为例, 进行分析, 操作, 如有错误欢迎简信与我交流. 不进行修改的话, presentViewController:animated:completion:相信这个方法很多人都是用过, 称作模态推出界面, 默认都是从屏幕下方推出新的控制器. 自定义的目的就是为了修改固定的推出方式, 同时加上你想要的动画. 一个关键的概念: UIViewControllerAnimatedTrans

[iOS]过渡动画之高级模仿 airbnb

注意:我为过渡动画写了两篇文章:第一篇:[iOS]过渡动画之简单模仿系统,主要分析系统简单的动画实现原理,以及讲解坐标系.绝对坐标系.相对坐标系,坐标系转换等知识,为第二篇储备理论基础.最后实现 Mac 上的文件预览动画.第二篇:[iOS]过渡动画之高级模仿 airbnb,主要基于第一篇的理论来实现复杂的界面过渡,包括进入和退出动画的串联.最后将这个动画的实现部分与当前界面解耦,并封装为一个普适(其他类似界面也适用)的工具类. 这两篇文章将会带你学到如何实现下图 airbnb 首页类似的过渡动画

CSS基础篇之背景、过渡动画

background-origin(背景原点) 设置元素背景图片的原始起始位置.必须保证背景是background-repeat为no-repeat属性才能生效. background-origin:border-box|padding-box|content-box: border-box 这是用border-box时图片位于边框左上角 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g

iOS自定义转场动画实战讲解

iOS自定义转场动画实战讲解 转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerAnimated:completion:这一组函数以模态视图的方式展现.隐藏视图.如果用到了navigationController,还可以调用pushViewController:animated:和popViewController这一组函数将新的视图控制器压栈.弹栈. 下图中所有转场动画都是自定义的

关于自定义转场动画,我都告诉你。

原文出处: 伯恩的遗产(@翁呀伟呀 ) 概述 这篇文章,我将讲述几种转场动画的自定义方式,并且每种方式附上一个示例,毕竟代码才是我们的语言,这样比较容易上手.其中主要有以下三种自定义方法,供大家参考: Push & Pop Modal Segue 前两种大家都很熟悉,第三种是 Stroyboard 中的拖线,属于 UIStoryboardSegue 类,通过继承这个类来自定义转场过程动画. Push & Pop 首先说一下 Push & Pop 这种转场的自定义,操作步骤如下: 创