-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathUIButton+Bootstrap.m
executable file
·117 lines (103 loc) · 5.69 KB
/
UIButton+Bootstrap.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
112
113
114
115
116
117
//
// UIButton+Bootstrap.m
// UIButton+Bootstrap
//
// Created by Oskur on 2013-09-29.
// Copyright (c) 2013 Oskar Groth. All rights reserved.
//
#import "UIButton+Bootstrap.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIButton (Bootstrap)
-(void)bootstrapStyle{
self.layer.borderWidth = 1;
self.layer.cornerRadius = CGRectGetHeight(self.bounds)/2;
self.layer.masksToBounds = YES;
[self setAdjustsImageWhenHighlighted:NO];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.titleLabel setFont:[UIFont fontWithName:@"FontAwesome" size:self.titleLabel.font.pointSize]];
}
-(void)defaultStyle{
[self bootstrapStyle];
[self setTitleColor:kColorBrandBlue forState:UIControlStateNormal];
[self setTitleColor:kColorBrandBlue forState:UIControlStateHighlighted];
self.backgroundColor = [UIColor whiteColor];
self.layer.borderColor = [[UIColor colorWithRed:204/255.0 green:204/255.0 blue:204/255.0 alpha:1] CGColor];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithRed:235/255.0 green:235/255.0 blue:235/255.0 alpha:1]] forState:UIControlStateHighlighted];
}
-(void)primaryStyle{
[self bootstrapStyle];
self.backgroundColor = kColorBrandBlue;
self.layer.borderColor = [kColorBrandBlue CGColor];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithHexString:@"0x28a464"]] forState:UIControlStateHighlighted];
}
-(void)successStyle{
[self setAdjustsImageWhenHighlighted:NO];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.titleLabel setFont:[UIFont systemFontOfSize:MIN(17, self.titleLabel.font.pointSize) weight:UIFontWeightMedium]];
[self setBackgroundImage:[self buttonImageFromColor:kColorBrandBlue] forState:UIControlStateNormal];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithHexString:@"0x0060FF" andAlpha:0.5]] forState:UIControlStateDisabled];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithHexString:@"0x0060FF" andAlpha:.8]] forState:UIControlStateHighlighted];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self setTitleColor:[UIColor colorWithWhite:1.0 alpha:0.5] forState:UIControlStateDisabled];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
}
-(void)infoStyle{
[self bootstrapStyle];
self.layer.borderColor = [[UIColor clearColor] CGColor];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithHexString:@"0x4E90BF"]] forState:UIControlStateNormal];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithHexString:@"0x4E90BF" andAlpha:0.5]] forState:UIControlStateDisabled];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithHexString:@"0x4E90BF"]] forState:UIControlStateHighlighted];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self setTitleColor:[UIColor colorWithWhite:1.0 alpha:0.5] forState:UIControlStateDisabled];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
}
-(void)warningStyle{
[self bootstrapStyle];
self.backgroundColor = [UIColor colorWithHexString:@"0xff5847"];
self.layer.borderColor = [[UIColor colorWithHexString:@"0xff5847"] CGColor];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithHexString:@"0xef4837"]] forState:UIControlStateHighlighted];
}
-(void)dangerStyle{
[self bootstrapStyle];
self.backgroundColor = [UIColor colorWithRed:217/255.0 green:83/255.0 blue:79/255.0 alpha:1];
self.layer.borderColor = [[UIColor colorWithRed:212/255.0 green:63/255.0 blue:58/255.0 alpha:1] CGColor];
[self setBackgroundImage:[self buttonImageFromColor:[UIColor colorWithRed:210/255.0 green:48/255.0 blue:51/255.0 alpha:1]] forState:UIControlStateHighlighted];
}
- (void)addAwesomeIcon:(FAIcon)icon beforeTitle:(BOOL)before
{
NSString *iconString = [NSString fontAwesomeIconStringForEnum:icon];
self.titleLabel.font = [UIFont fontWithName:@"FontAwesome"
size:self.titleLabel.font.pointSize];
NSString *title = [NSString stringWithFormat:@"%@", iconString];
if(self.titleLabel.text) {
if(before)
title = [title stringByAppendingFormat:@" %@", self.titleLabel.text];
else
title = [NSString stringWithFormat:@"%@ %@", self.titleLabel.text, iconString];
}
[self setTitle:title forState:UIControlStateNormal];
}
- (UIImage *) buttonImageFromColor:(UIColor *)color {
CGRect rect = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
+ (UIButton *)buttonWithStyle:(StrapButtonStyle)style andTitle:(NSString *)title andFrame:(CGRect)rect target:(id)target action:(SEL)selector{
UIButton *btn = [[UIButton alloc] initWithFrame:rect];
[btn setTitle:title forState:UIControlStateNormal];
[btn addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
const SEL selArray[] = {@selector(bootstrapStyle), @selector(defaultStyle), @selector(primaryStyle), @selector(successStyle), @selector(infoStyle), @selector(warningStyle), @selector(dangerStyle)};
if ([btn respondsToSelector:selArray[style]]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[btn performSelector:selArray[style]];
#pragma clang diagnostic pop
}
return btn;
}
@end