-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEllipseViewController.m
More file actions
59 lines (45 loc) · 1.86 KB
/
EllipseViewController.m
File metadata and controls
59 lines (45 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//
// EllipseViewController.m
// ShapeAnimation_iOSDemo
//
// Created by Zhang Yungui on 15/2/24.
// Copyright (c) 2015 github.com/rhcad. All rights reserved.
//
#import "EllipseViewController.h"
#import "ShapeAnimation.h"
@interface EllipseViewController () {
SAAnimationLayer *animationLayer_;
}
@end
@implementation EllipseViewController
- (void)viewDidLoad {
[super viewDidLoad];
SAGradient *gradient = [SAGradient gradient:@[(id)CGColorFromRGBA(1,0,0,1),
(id)CGColorFromRGBA(0.1,0,0,0.1)] axial:YES];
gradient.startPoint = CGPointMake(0.3, 0.3);
animationLayer_ = ((SAAnimationLayerView *)self.shapeView).animationLayer;
NSParameterAssert([animationLayer_ isKindOfClass:[SAAnimationLayer class]]);
animationLayer_.properties = @[@"rx", @20, @"ry", @20, @"angle", @0];
animationLayer_.drawBlock = ^(SAAnimationLayer *layer, CGContextRef ctx) {
CGFloat rx = [layer getProperty:@"rx"];
CGFloat ry = [layer getProperty:@"ry"];
CGFloat angle = [layer getProperty:@"angle"] * M_PI / 360;
CGPoint cen = SARectCenter(layer.bounds);
CGAffineTransform xf = CGAffineTransformRotate(CGAffineTransformMakeTranslation(cen.x, cen.y), angle);
CGRect rect = CGRectMake(-rx, -ry, 2 * rx, 2 * ry);
[gradient fillEllipseInContext:ctx rect:rect transform:xf];
};
[self radiusXChanged:self.rxSlider];
[self radiusYChanged:self.rySlider];
[self angleChanged:self.angleSlider];
}
- (IBAction)radiusXChanged:(UISlider *)sender {
[animationLayer_ setProperty:sender.value key:@"rx"];
}
- (IBAction)radiusYChanged:(UISlider *)sender {
[animationLayer_ setProperty:sender.value key:@"ry"];
}
- (IBAction)angleChanged:(UISlider *)sender {
[animationLayer_ setProperty:sender.value key:@"angle"];
}
@end