转场动画 CATransition ,效果惊人

关于苹果的动画支持类,可叹其强大,性能以及 动画效果惊人。膜拜啊!

转场动画就是从一个场景以动画的形式过渡到另一个场景。转场动画的使用一般分为以下几个步骤:

1.创建转场动

2.设置转场类型、子类型(可选)及其他属性画

3.设置转场后的新视图并添加动画到图层
下表列出了常用的转场类型(注意私有API是苹果官方没有公开的动画类型,但是目前通过仍然可以使用):

动画类型 说明 对应常量 是否支持方向设置
公开API      
fade 淡出效果 kCATransitionFade
movein 新视图移动到旧视图上 kCATransitionMoveIn
push 新视图推出旧视图 kCATransitionPush
reveal 移开旧视图显示新视图 kCATransitionReveal
私有API   私有API只能通过字符串访问  
cube 立方体翻转效果
oglFlip 翻转效果
suckEffect 收缩效果
rippleEffect 水滴波纹效果
pageCurl 向上翻页效果
pageUnCurl 向下翻页效果
cameralIrisHollowOpen 摄像头打开效果
cameraIrisHollowClose 摄像头关闭效果

另外对于支持方向设置的动画类型还包含子类型:

动画子类型 说明
kCATransitionFromRight 从右侧转场
kCATransitionFromLeft 从左侧转场
kCATransitionFromTop 从顶部转场
kCATransitionFromBottom 从底部转场

//添加手势

UISwipeGestureRecognizer *leftSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(leftSwipe:)];
    leftSwipeGesture.direction=UISwipeGestureRecognizerDirectionLeft;
    [self.view addGestureRecognizer:leftSwipeGesture];
    
    UISwipeGestureRecognizer *rightSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(rightSwipe:)];
    rightSwipeGesture.direction=UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:rightSwipeGesture];
    
    UISwipeGestureRecognizer *topSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(topSwipe:)];
    topSwipeGesture.direction=UISwipeGestureRecognizerDirectionUp;
    [self.view addGestureRecognizer:topSwipeGesture];
    
    
    UISwipeGestureRecognizer *bottomSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(bottomSwipe:)];
    bottomSwipeGesture.direction=UISwipeGestureRecognizerDirectionDown;
    [self.view addGestureRecognizer:bottomSwipeGesture];

#pragma mark 向左滑动浏览下一张图片

-(void)leftSwipe:(UISwipeGestureRecognizer *)gesture{
    [self transitionAnimation:1];
}

#pragma mark 向右滑动浏览上一张图片
-(void)rightSwipe:(UISwipeGestureRecognizer *)gesture{
    [self transitionAnimation:2];
}

-(void)topSwipe:(UISwipeGestureRecognizer *)gesture{
    [self transitionAnimation:3];
}

-(void)bottomSwipe:(UISwipeGestureRecognizer *)gesture{
    [self transitionAnimation:4];
}

#pragma mark 转场动画
-(void)transitionAnimation:(NSInteger)direction{
    //1.创建转场动画对象
    CATransition *transition=[[CATransition alloc]init];
    
    //2.设置动画类型,注意对于苹果官方没公开的动画类型只能使用字符串,并没有对应的常量定义
    transition.type=@"rippleEffect";
    
    BOOL bl = YES;
    
    //设置子类型
    if (direction == 1) {
        transition.subtype=kCATransitionFromRight;
        bl = YES;
    }else if (direction == 2) {
        transition.subtype=kCATransitionFromLeft;
        bl = NO;
    }else if (direction == 3) {
        transition.subtype=kCATransitionFromTop;
        bl = YES;
    }else{
         transition.subtype=kCATransitionFromBottom;
        bl = NO;
    }
    
    //设置动画时常
    transition.duration=1.0f;
    
    //3.设置转场后的新视图添加转场动画
    if (bl) {
        currentIndex=(currentIndex+1)%IMAGE_COUNT;
    }else{
        currentIndex=(currentIndex-1+IMAGE_COUNT)%IMAGE_COUNT;
    }
    NSString *imageName=[NSString stringWithFormat:@"%d",(int)currentIndex];
   
    _imageView.image = [UIImage imageNamed:imageName];
    [_imageView.layer addAnimation:transition forKey:@"KCTransitionAnimation1"];
}

或者用UIView动画来实现转场:

#pragma mark 转场动画
-(void)transitionAnimation:(BOOL)isNext{
    UIViewAnimationOptions option;
    if (isNext) {
        option=UIViewAnimationOptionCurveLinear|UIViewAnimationOptionTransitionFlipFromRight;
    }else{
        option=UIViewAnimationOptionCurveLinear|UIViewAnimationOptionTransitionFlipFromLeft;
    }
    
    [UIView transitionWithView:_imageView duration:1.0 options:option animations:^{
        _imageView.image=[self getImage:isNext];
    } completion:nil];

}

老规矩,效果图如下:

时间: 2024-10-12 22:51:27

转场动画 CATransition ,效果惊人的相关文章

iOS:核心动画之转场动画CATransition

转场动画——CATransition CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 动画属性: –type:动画过渡类型 –subtype:动画过渡方向 –startProgress:动画起点(在整体动画的百分比) –endProgress:动画终点(在整体动画的百分比

iOS CoreAnimation 转场动画 CATransition

本文参考:http://www.cnblogs.com/kenshincui/p/3972100.html#autoid-3-0-0总结的: 效果: 转场动画就是从一个场景以动画的形式过渡到另一个场景.转场动画的使用一般分为以下几个步骤: 1.创建转场动画 CATransition 2.设置转场类型transtion.type.子类型transtion.subtype(可选)及其他属性 3.设置转场后的新视图并添加动画到图层 下表列出了常用的转场类型(注意私有API是苹果官方没有公开的动画类型,

转场动画CATransition~~~~~~

•CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 • •UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 • •动画属性: –type:动画过渡类型 –subtype:动画过渡方向 –startProgress:动画起点(在整体动画的百分比) –endProgress:动画终点(在整体动画的百分比) 转场动画使用步骤~

图片浏览(CATransition)转场动画

Main.storyboard ViewController.m // //  ViewController.m //  8A04.图片浏览(转场动画) // //  Created by huan on 16/2/4. //  Copyright © 2016年 huanxi. All rights reserved. // #import "ViewController.h" #define AnimationDuration 2 @interface ViewController

核心动画之CAAnimationGroup动画组和CATransition 转场动画以及UIView的转场动画

1.动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup 对象加入层后,组中所有动画对象可以同时并发运行 1.1属性说明: animations:用来保存一组动画对象的NSArray ·默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间. -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // 

iOS之UI--转场动画

1.什么是转场动画?    就是从一个场景转换到另一个场景,像导航控制器的push效果,就是一个转场.    2.如何创建转场动画    创建转场动画    CATransition *anim = [CATransition animation];    设置转场类型    anim.type = @"cube";    anim.duration = 1;    设置转场的方向    anim.subtype = kCATransitionFromLeft;    设置动画的开始位

iOS 转场动画

Inherits from CAAnimation : NSObject Conforms to NSCoding (CAAnimation)NSCopying (CAAnimation)CAAction (CAAnimation)CAMediaTiming (CAAnimation)NSObject (NSObject) Framework /System/Library/Frameworks/QuartzCore.framework Availability Available in iOS

ios开发核心动画五:转场动画

#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageV; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } static int _i = 1; -(void)touchesBegan:(NSSet<U

核心动画04-CATransition转场动画

Transition:过度,执行一些过度动画,比如两个界面切换的时候,push就是一种过度动画 模拟翻书效果:通过按钮模拟左右滑动,index标记当前的图片的下标名 #pragma make 上一张 - (IBAction)previous:(UIButton *)sender { self.index--; if (self.index == -1) { self.index = 8; } self.iconView.image = [UIImage imageNamed:[NSString