在iOS7中,给UIView添加了一个方法用来直接使用关键帧动画而不用借助CoreAnimation来实现,那就是animateKeyframesWithDuration

以下是使用源码:

//
// ViewController.m
//
// Created by YouXianMing on 14/11/26.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
[self runAnimateKeyframes];
}

- (void)runAnimateKeyframes {

/**
* relativeDuration 动画在什么时候开始
* relativeStartTime 动画所持续的时间
*/

[UIView animateKeyframesWithDuration:6.f
delay:0.0
options:UIViewKeyframeAnimationOptionCalculationModeLinear
animations:^{
[UIView addKeyframeWithRelativeStartTime:0.0 // 相对于6秒所开始的时间(第0秒开始动画)
relativeDuration:1/3.0 // 相对于6秒动画的持续时间(动画持续2秒)
animations:^{
self.view.backgroundColor = [UIColor redColor];
}];

[UIView addKeyframeWithRelativeStartTime:1/3.0 // 相对于6秒所开始的时间(第2秒开始动画)
relativeDuration:1/3.0 // 相对于6秒动画的持续时间(动画持续2秒)
animations:^{
self.view.backgroundColor = [UIColor yellowColor];
}];
[UIView addKeyframeWithRelativeStartTime:2/3.0 // 相对于6秒所开始的时间(第4秒开始动画)
relativeDuration:1/3.0 // 相对于6秒动画的持续时间(动画持续2秒)
animations:^{
self.view.backgroundColor = [UIColor greenColor]; }];

}
completion:^(BOOL finished) {
[self runAnimateKeyframes];
}];
}

@end



细节之处:


[img]http://dl2.iteye.com/upload/attachment/0118/6434/1e7dc9c7-8da1-3179-8333-978ed3a30b88.png[/img]