八 iOS之 CATransition (转场动画)

CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。

动画转场类型

类型字符串效果说明关键字方向
fade交叉淡化过渡YES
push新视图把旧视图推出去YES
moveIn新视图移到旧视图上面YES
reveal将旧视图移开,显示下面的新视图YES
cube立方体翻滚效果
oglFlip上下左右翻转效果
suckEffect收缩效果,如一块布被抽走NO
rippleEffect水滴效果NO
pageCurl向上翻页效果
pageUnCurl向下翻页效果
cameraIrisHollowOpen相机镜头打开效果NO
cameraIrisHollowClose相机镜头关闭效果NO

使用UIView动画函数实现转场动画

单视图
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
  • 参数说明:

    • duration:动画的持续时间
    • view:需要进行转场动画的视图
    • options:转场动画的类型
    • animations:将改变视图属性的代码放在这个block中
    • completion:动画结束后,会自动调用这个block
    双视图
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion;
  • 参数说明:
    • duration:动画的持续时间
    • options:转场动画的类型
    • animations:将改变视图属性的代码放在这个block中
    • completion:动画结束后,会自动调用这个block

代码演示

点击屏幕切换图片

这里写图片描述

  • 在控制器中添加一个UIImageView
  • 核心代码 ViewController.m
#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController

static int i = 2;

- (void)viewDidLoad {
    [super viewDidLoad];


}


-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{

    if (i == 4) {
        i = 1;
    }
    //更改图片name,用于不断切换图片,需要提前把图片命名为“1”、“2”、“3”
    NSString * strImage = [NSString stringWithFormat:@"%d",i];

    _imageView.image = [UIImage imageNamed:strImage];

    i++;


    //转场动画
    //初始化
    CATransition * anim = [CATransition animation];


    //设置动画转场类型,可以是`fade', `moveIn', `push' and `reveal'等等

    anim.type = @"cameraIrisHollowOpen";
    //动画执行周期
    anim.duration = 1;

    [_imageView.layer addAnimation:anim forKey:nil];


    /*-----------我是分界线-----------------*/
    //还可以使用UIView的动画函数实现转场动画

    //单视图API
//    [UIView transitionWithView:_imageView duration:1 options:UIViewAnimationOptionTransitionCurlDown animations:^{
//        
//        NSLog(@"动画开始执行前走这里");
//        
//        
//    } completion:^(BOOL finished) {
//        
//        //动画执行完毕后的首位操作
//        NSLog(@"动画执行完毕走这里");
//        
//    }];


    //双视图API
//    这是一个便捷的视图过渡 API,在动画过程中,首先将 fromView 从父视图中删除,然后将 toView 添加,就是做了一个替换操作。
//+ (void)transitionFromView:(UIView *)fromView
//toView:(UIView *)toView
//duration:(NSTimeInterval)duration
//options:(UIViewAnimationOptions)options
//completion:(void (^ __nullable)(BOOL finished))completion;


}



@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值