1 @interface ViewController ()
2
3 @property (nonatomic, weak) IBOutlet UIView *layerView;
4 @property (nonatomic, weak) IBOutlet CALayer *colorLayer;
5
6 @end
7
8 @implementation ViewController
9
10 - (void)viewDidLoad
11 {
12 [super viewDidLoad];
13 //create sublayer
14 self.colorLayer = [CALayer layer];
15 self.colorLayer.frame = CGRectMake(50.0f, 50.0f, 100.0f, 100.0f);
16 self.colorLayer.backgroundColor = [UIColor blueColor].CGColor;
17 //add it to our view
18 [self.layerView.layer addSublayer:self.colorLayer];
19 }
20
21 - (IBAction)changeColor
22 {
23 //create a keyframe animation
24 CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
25 animation.keyPath = @"backgroundColor";
26 animation.duration = 2.0;
27 animation.values = @[
28 (__bridge id)[UIColor blueColor].CGColor,
29 (__bridge id)[UIColor redColor].CGColor,
30 (__bridge id)[UIColor greenColor].CGColor,
31 (__bridge id)[UIColor blueColor].CGColor ];
32 //add timing function
33 CAMediaTimingFunction *fn = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseIn];
34 animation.timingFunctions = @[fn, fn, fn];
35 //apply animation to layer
36 [self.colorLayer addAnimation:animation forKey:nil];
37 }
38
39 @end