-
Notifications
You must be signed in to change notification settings - Fork 30
/
CPTouchableView.m
67 lines (52 loc) · 1.65 KB
/
CPTouchableView.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
//
// CPTouchableView.m
// candpiosapp
//
// Created by Stojce Slavkovski on 29.6.12.
// Copyright (c) 2012 Coffee and Power Inc. All rights reserved.
//
#import "CPTouchableView.h"
@interface CPTouchableView()
@property (strong, nonatomic) UIColor *oldBackgroundColor;
@end
@implementation CPTouchableView
- (void)awakeFromNib
{
[super awakeFromNib];
self.userInteractionEnabled = YES;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.delegate touchUp:self];
[UIView animateWithDuration:0.3f delay:0.3f options:UIViewAnimationOptionCurveEaseIn animations:^{
self.backgroundColor = self.oldBackgroundColor;
} completion:nil];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
self.oldBackgroundColor = self.backgroundColor;
const CGFloat *rgb = CGColorGetComponents(self.oldBackgroundColor.CGColor);
float red = rgb[0];
float green = rgb[1];
float blue = rgb[2];
float alpha = rgb[3];
int colorChange = 30;
CGFloat colorBrightness = ((red * 299) + (green * 587) + (blue * 114)) / 1000;
if (colorBrightness > 0.5)
{
colorChange = -30;
}
self.backgroundColor = [UIColor colorWithR:red + colorChange
G:green + colorChange
B:blue + colorChange
A:alpha];
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
self.backgroundColor = self.oldBackgroundColor;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
self.backgroundColor = self.oldBackgroundColor;
}
@end