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

IOS 核心动画(Core Animation)

2017-03-22 13:59 239 查看
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它 能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就 可以实现非常强大的功能。

Core Animation可以用在Mac OS X和iOS平台。

Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。

要注意的是,Core Animation是直接作用在CALayer上的,并非UIView。

Core Animation的使用步骤

● 1.使用它需要先添加QuartzCore.framework框架和引入主头文件 <QuartzCore/QuartzCore.h>(iOS7不需要)

● 2.初始化一个CAAnimation对象,并设置一些动画相关属性

● 3.通过调用CALayer的addAnimation:forKey:方法增加CAAnimation对象到CALayer中,这样就能开始执行动画了

● 4.通过调用CALayer的removeAnimationForKey:方法可以停止CALayer
中的动画

CAAnimation继承结构

#import "NJViewController.h"

@interface NJViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
- (IBAction)nextBtnClick:(id)sender;
- (IBAction)preBtnClick:(id)sender;

@property (nonatomic, assign) int index;
@end

@implementation NJViewController

// 下一张
- (IBAction)nextBtnClick:(id)sender {
self.index++;
if (self.index >7) {
self.index = 1;
}

NSString *imageName = [NSString stringWithFormat:@"%d.jpg", self.index];
UIImage *newImage = [UIImage imageNamed:imageName];
self.iconView.image = newImage;

// 1.创建核心动画
CATransition *ca = [CATransition animation];
// 1.1动画过渡类型
ca.type = @"cube";
// 1.2动画过渡方向
ca.subtype =  kCATransitionFromRight;
// 1.3动画起点(在整体动画的百分比)
//    ca.startProgress = 0.5;
ca.endProgress = 0.5;

// 动画时间
ca.duration = 1;

// 2.添加核心动画
[self.iconView.layer addAnimation:ca forKey:nil];
}

// 上一张
- (IBAction)preBtnClick:(id)sender {
self.index--;
if (self.index < 1) {
self.index = 7;
}
NSString *imageName = [NSString stringWithFormat:@"%d.jpg", self.index];
UIImage *newImage = [UIImage imageNamed:imageName];
self.iconView.image = newImage;

// 1.创建核心动画
CATransition *ca = [CATransition animation];
// 1.1告诉系统执行什么动画
ca.type = @"cube";
ca.subtype =  kCATransitionFromLeft;

ca.duration = 1;

// 2.添加核心动画
[self.iconView.layer addAnimation:ca forKey:nil];

}
@end


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: