您的位置:首页 > 移动开发 > IOS开发

八 iOS之 CATransition (转场动画)

2017-11-01 11:50 549 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 转场动画