1 typedef NS_ENUM(NSInteger, UIButtonType) {
2 UIButtonTypeCustom = 0, // 用户自定义类型
3 UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0), // 系统按钮 iOS7以后圆角按钮被 UIButtonTypeSystem 取代 两者等同
4
5 UIButtonTypeDetailDisclosure, //蓝色箭头按钮
6 UIButtonTypeInfoLight, // 亮色感叹号按钮
7 UIButtonTypeInfoDark, // 深色感叹号按钮
8 UIButtonTypeContactAdd, //加号按钮
9
10 UIButtonTypeRoundedRect = UIButtonTypeSystem, // 系统按钮 iOS7以后圆角按钮被 UIButtonTypeSystem 取代 两者等同
11 };
//区别并不大,实际开发中一般都是自定义button
1 //button 创建
2
3 UIButton * btn = [[UIButton alloc] init];
4 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
1 //button状态
2 typedef NS_OPTIONS(NSUInteger, UIControlState) {
3 UIControlStateNormal = 0, // 正常状态
4 UIControlStateHighlighted = 1 << 0, // 高亮状态
5 UIControlStateDisabled = 1 << 1, // 失效状态
6 UIControlStateSelected = 1 << 2, // 选中状态
7 UIControlStateFocused NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 3, // 聚焦状态 (iOS新加入 应该和3D Touch有关)
8 UIControlStateApplication = 0x00FF0000, // 当用做应用标志时
9 UIControlStateReserved = 0xFF000000 // 框架预留 无意义
10 };
1 //Attributes
2
3 //位置大小
4 btn.frame = CGRectMake(20, 20, 70, 30);
5
6 //背景色
7 btn.backgroundColor = [UIColor redColor];
8
9 //标题
10 [btn setTitle:@"按钮" forState:UIControlStateNormal]; // 标题
11 [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; // 标题颜色
12 [btn setTitleShadowColor:[UIColor whiteColor] forState:UIControlStateNormal]; // 标题阴影颜色
13
14 //image
15 [btn setImage:[UIImage imageNamed:@"imageName"] forState:UIControlStateNormal]; // 不会被拉伸,原比例显示
16 [btn setBackgroundImage:[UIImage imageNamed:@"imageName"] forState:UIControlStateNormal]; // 会被拉伸,充满整个btn
17
18 //间距
19 btn.contentEdgeInsets = UIEdgeInsetsMake(5, 5, 5, 5); // btn整体内容四周的间距
20 btn.titleEdgeInsets = UIEdgeInsetsMake(5, 5, 5, 5); // 标题四周间距
21 btn.imageEdgeInsets = UIEdgeInsetsMake(5, 5, 5, 5); // 图片四周间距
22
23 //设置高亮状态按钮是否发光
24 btn.showsTouchWhenHighlighted = YES; // 默认为NO
//事件
[btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
//事件状态
typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
UIControlEventTouchDown = 1 << 0, // 按下
UIControlEventTouchDownRepeat = 1 << 1, // 多次按下
UIControlEventTouchDragInside = 1 << 2, // 保持按下,在按钮及其一定的外围拖动
UIControlEventTouchDragOutside = 1 << 3, // 保持按下,在按钮外面拖动
UIControlEventTouchDragEnter = 1 << 4, // DragOutside进入DragInside触发
UIControlEventTouchDragExit = 1 << 5, // DragInside到DragOutside触发
UIControlEventTouchUpInside = 1 << 6, // 按钮及其一定外围内松开
UIControlEventTouchUpOutside = 1 << 7, // 按钮外面松开
UIControlEventTouchCancel = 1 << 8, // 点击取消
... ...
}
1 //获取button相关内容的属性
2 @property(nullable, nonatomic,readonly,strong) NSString *currentTitle; // 当前标题
3 @property(nonatomic,readonly,strong) UIColor *currentTitleColor; // 当前标题颜色
4 @property(nullable, nonatomic,readonly,strong) UIColor *currentTitleShadowColor; // 当前标题阴影颜色
5 @property(nullable, nonatomic,readonly,strong) UIImage *currentImage; // 当前图片
6 @property(nullable, nonatomic,readonly,strong) UIImage *currentBackgroundImage; // 当前背景图片
7 @property(nullable, nonatomic,readonly,strong) NSAttributedString *currentAttributedTitle NS_AVAILABLE_IOS(6_0); // 当前富文本标题
8
9 @property(nullable, nonatomic,readonly,strong) UILabel *titleLabel NS_AVAILABLE_IOS(3_0); // 当前标题UILabel
10 @property(nullable, nonatomic,readonly,strong) UIImageView *imageView NS_AVAILABLE_IOS(3_0); // 当前图片UIImageView
1 //绘制
2
3 - (CGRect)backgroundRectForBounds:(CGRect)bounds; // 返回背景绘制区域
4 - (CGRect)contentRectForBounds:(CGRect)bounds; // 返回内容绘制区域
5 - (CGRect)titleRectForContentRect:(CGRect)contentRect; // 返回标题绘制区域
6 - (CGRect)imageRectForContentRect:(CGRect)contentRect; // 返回图片绘制区域