UIButton 解析
2015-12-05 21:56
471 查看
IOS之按钮控件--Button全解析及使用
转载自:forgetIOS开发中伴随我们始终的 最常用的几个空间之一 -- UIButton 按钮,对于button今天在此做一些浅析,并介绍下主流用法以及常见问题解决办法.
首先是继承问题,UIButton继承于UIControl,而UIControl继承于UIView.
那么UIButton自然继承了UIView的属性.比如frame,layer等
至于UIButton的创建
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.backgroundColor = [UIColor clearColor];
button.frame = CGRectMake(90, 90, 51, 24);
// 内存: 不需要释放 因为是便利构造器
[button setTitle:@"请点击" forState:UIControlStateNormal]; // 正常状态
[button setTitle:@"点击中" forState:UIControlStateHighlighted]; // 高亮状态
[button setTitle:@"已点击" forState:UIControlStateSelected];
button.selected = NO;
self.isSelected = 0;
[button setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor yellowColor] forState:UIControlStateSelected];
// 按钮字体大小
button.titleLabel.font = [UIFont systemFontOfSize:30];
// 设置前景图片 (当button frame改变的时候 图片不变)
[button setImage:[UIImage imageNamed:@"BtnOff@2x.png"] forState:UIControlStateNormal];
// 禁止按钮按下颜色变深效果
button.adjustsImageWhenHighlighted = NO;
[button setImage:[UIImage imageNamed:@"IconAdd.png"] forState:UIControlStateHighlighted];
// 设置背景图片 (当button frame改变的时候 图片不变)
// 创建一个UIImage对象, 图片对象
[button setBackgroundImage:[UIImage imageNamed:@"FrendAdd.png"] forState:UIControlStateNormal]; // 正常
[button setBackgroundImage:[UIImage imageNamed:@"IconAdd.png"] forState:UIControlStateHighlighted]; // 高亮
// button最核心的方法
// 1.target 目标 就是button指定谁去执行方法
// 2.action 方法 就是执行什么
// 3.evunts 就是点击按钮时的状态
// 4.UIControlEventTouchUpInside 当手离开触发
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[self.window addSubview:button];
对于在button上加图片有2种方式
第一种:setBackGroudImage:图片被拉伸
第二种:setImage: 图片保持原大小
注意设置图片时可能会出现渲染问题 此时的解决办法
// 处理图片渲染问题
UIImage *setImage = [UIImage imageNamed:@"setImage"];
UIImage *newSetImage = [setImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
给button设置成圆形
// 设置button的圆角半径,这样按钮就变成了园的
button.layer.cornerRadius = 50;
// 将button上的图片一样变成圆形
[button.layer masksToBounds];
// 添加边框
button.layer.borderWidth = 3;
// 边框颜色 注意要加.CGColor属性
button.layer.borderColor = [UIColor orangeColor].CGColor;
给button设置阴影
// 设置阴影 横坐标向右 纵坐标向下 可负值
button.layer.shadowOffset = CGSizeMake(1, 1);
同时设置button上有文字和图片,并且同时实现点击效果
// 在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets、titleEdgeInsets、imageEdgeInsets
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];//给button添加image
//设置image在button上的位置(上top,左left,下bottom,右right)这里可以写负值,对上写-10,那么image就象上移动10个像素
button.imageEdgeInsets = UIEdgeInsetsMake(5,13,21,button.titleLabel.bounds.size.width);
button如果设置了图片的情况下 还有一个酷炫的点击效果
button.showsTouchWhenHighlighted = YES;
以上适合于IOS初学者对于button的使用,button的一些常用主流实现功能以及常见的需求逻辑
相关文章推荐
- zoj 3349 Special Subsequence 【离散化二分 + 线段树优化dp】
- Android中startActivity中的permission检测与UID机制
- [Android--UI]多屏幕设计
- MySQL报错“1366 - Incorrect integer value: '' XXXXXXX' at row 1 ”
- [转载]百度编辑器-Ueditor使用
- JavaFX入门(五):使用CSS样式美化你的UI控件
- 使用Systrace分析UI性能
- Android API Guides 笔记
- Shiro+MySQL+Druid数据源验证小记
- valuestack,stackContext,ActionContext.之间的关系
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest F. Gourmet and Banquet(贪心+二分)
- jdbc中EXECUTE方法与executeQuery,executeUpdate方法的运用
- 总结:request.setAttribute()、session.setAttribute()和request.getParameter()的联系与区别
- 黑马程序员——Foundation框架——NSValue类介绍和使用
- ZUI官网
- UI 17 异步加载图片 KVO
- UI中的七种手势
- 按钮实现刚点击就切换状态(即UIControlEventTouchDown)
- [Java 基础] 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- iOS-UITextField-通知