forked from briancoyner/Core-Animation-Fun-House
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BTSLissajousViewController.m
112 lines (86 loc) · 3.15 KB
/
BTSLissajousViewController.m
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//
// BTSLissajousViewController.m
// CoreAnimationFunHouse
//
// Created by Brian Coyner on 10/28/11.
// Copyright (c) 2011 Brian Coyner. All rights reserved.
//
#import "BTSLissajousViewController.h"
#import "BTSLissajousView.h"
#import "BTSLissajousLayer.h"
@interface BTSLissajousViewController() {
__weak IBOutlet UISlider *_amplitudeSlider;
__weak IBOutlet UIStepper *_aStepper;
__weak IBOutlet UIStepper *_bStepper;
__weak IBOutlet UISlider *_deltaSlider;
__weak IBOutlet UILabel *_deltaLabel;
__weak IBOutlet UILabel *_aValueLabel;
__weak IBOutlet UILabel *_bValueLabel;
}
- (IBAction)updateAmplitude:(id)sender;
- (IBAction)updateA:(id)sender;
- (IBAction)updateB:(id)sender;
- (IBAction)updateDelta:(id)sender;
@end
@implementation BTSLissajousViewController
- (void)viewDidLoad
{
[super viewDidLoad];
BTSLissajousLayer *layer = (BTSLissajousLayer *)[[[self view] viewWithTag:100] layer];
[_amplitudeSlider setMinimumValue:1.0];
[_amplitudeSlider setMaximumValue:[layer bounds].size.height / 2.0];
[_amplitudeSlider setValue:[_amplitudeSlider maximumValue] / 2.0];
[_aStepper setMinimumValue:1.0];
[_aStepper setMaximumValue:10.0];
[_aStepper setValue:1.0];
[_bStepper setMinimumValue:0.0];
[_bStepper setMaximumValue:10.0];
[_bStepper setValue:2.0];
[_deltaSlider setMinimumValue:0.0];
[_deltaSlider setMaximumValue:2 * M_PI];
[_deltaSlider setValue:M_PI];
[self updateAmplitude:_amplitudeSlider];
[self updateA:_aStepper];
[self updateB:_bStepper];
[self updateDelta:_deltaSlider];
[layer setNeedsDisplay];
}
- (void)viewDidUnload
{
_amplitudeSlider = nil;
_aStepper = nil;
_bStepper = nil;
_deltaSlider = nil;
_aValueLabel = nil;
_bValueLabel = nil;
_deltaLabel = nil;
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (IBAction)updateAmplitude:(id)sender {
BTSLissajousLayer *layer = (BTSLissajousLayer *)[[[self view] viewWithTag:100] layer];
float value = [(UISlider *)sender value];
[layer setAmplitude:(CGFloat)value];
}
- (IBAction)updateA:(id)sender {
BTSLissajousLayer *layer = (BTSLissajousLayer *)[[[self view] viewWithTag:100] layer];
float value = [(UIStepper *)sender value];
[_aValueLabel setText:[NSString stringWithFormat:@"%0.0f", [_aStepper value]]];
[layer setA:(CGFloat)value];
}
- (IBAction)updateB:(id)sender {
BTSLissajousLayer *layer = (BTSLissajousLayer *)[[[self view] viewWithTag:100] layer];
float value = [(UIStepper *)sender value];
[_bValueLabel setText:[NSString stringWithFormat:@"%0.0f", [_bStepper value]]];
[layer setB:(CGFloat)value];
}
- (IBAction)updateDelta:(id)sender {
BTSLissajousLayer *layer = (BTSLissajousLayer *)[[[self view] viewWithTag:100] layer];
float value = [(UISlider *)sender value];
[_deltaLabel setText:[NSString stringWithFormat:@"%1.3f (%1.1F°)", value, value * (180/ M_PI)]];
[layer setDelta:(CGFloat)value];
}
@end