UIButton 解析
IOS之按钮控件--Button全解析及使用
IOS开发中伴随我们始终的 最常用的几个空间之一 -- 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的一些常用主流实现功能以及常见的需求逻辑
UIButton 解析的更多相关文章
- UIButton的resizableImageWithCapInsets使用解析
UIButton的resizableImageWithCapInsets使用解析 效果: 使用的源文件: 源码: // // ViewController.m // SpecialButton // ...
- xml文件解析(解析以后在RootTableViewController输出)
这是从美团弄得xml文件,地区和经纬度. 你点了地区以后 , 就可以查看经纬度 ,因为笔者懒, 有现成的文本框 , 所有偷懒了. 下面是一些枯燥的代码了 . #import <UIKit/UI ...
- 【原】iOS学习38网络之数据解析
1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. X ...
- 系统自带的NSJSONSerialization解析json文件
#import "ViewController.h" #import "Student.h" #import "GDataXMLNode.h" ...
- JSONKit解析json数据
先将第三方文件拖进工程 JSONKit.h和JSONKit.m 然后设置在ARC工程中添加MRC文件,如下图所示 #import "ViewController.h" #impor ...
- 【原】IOS中KVO模式的解析与应用
最近老翁在项目中多处用到了KVO,深感这种模式的好处.现总结如下: 一.概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单 ...
- 解析iOS开发中的FirstResponder第一响应对象
1. UIResonder 对于C#里所有的控件(例如TextBox),都继承于Control类.而Control类的继承关系如下: 代码如下: System.Object System.Marsha ...
- iOS开发——XML/JSON数据解析
NSJSONSerialization 接下来就正式开始.苹果官方给出的解析方式是性能最优越的,虽然用起来稍显复杂. 首先我们在上面已经有了我希望得到的信息的网站的API给我们的URL,在OC中,我要 ...
- **IOS:xib文件解析(xib和storyboard的比较,一个轻量级一个重量级)
使用Xcode做iOS项目,经常会和Xib文件打交道,因为Xib文件直观的展现出运行时视图的外观,所以上手非常容易,使用也很方便,但对于从未用纯代码写过视图的童鞋,多数对Xib的理解有些片面. Xib ...
随机推荐
- WCF配置文件的问题(位置)
引用过了远程的WCF服务,会自动生成配置文件,但是这个配置的位置,尽量放在applicationSettings的前面 刚才测试了,貌似放后面,会报错(执行的时候,这个问题,需要继续试验) (待验证) ...
- 批量创建IP方法
以下教程,将告诉大家如何在Windows系统中通过命令行,批量添加IP.目标,在本机的的网卡名称为“本地连接”的网卡中,批量添加192.168.1段的ip地址,起开始IP为10,每次增加1,知道22为 ...
- nmon的安装与使用
nmon的安装与使用 1.下载 nmon:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download nmonanalyser http://www. ...
- Chapter 1 First Sight——33
At that moment, the bell rang loudly, making me jump, and Edward Cullen was out of his seat. 在这个时候,铃 ...
- 下载google play上的APP
googol搜索 download apk directly,然后即可看到
- elasticsearch快照和恢复
摘要:es可以通过简单的命令对索引或者整个集群进行快照和恢复 快照和恢复 Snapshot and restore 模块允许创建单个索引或者整个集群的快照到远程仓库. 在初始版本里只支持共享文件系统的 ...
- Linq第三讲
LINQ 1.查询操作符 (1)源起 .net的设计者在IEnumerable<T>等接口基础之上定义了一系列的扩展方法来方便用户操作集合对象,这些扩展方法构成了LINQ的查询操作符 (2 ...
- 用java的socket来发送一个类
用socket可以简单的发送一些文本信息,太复杂的可能发送不了,比如图片音频可能要用到http来发送和接收了.最基本的使用socket来发送一个字符串,但有的时候我们希望能够发送一个类,这样serve ...
- linux 常用端口
常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务.守护进程.和程序所使用的最常见的通信端口.该列表还可以在 /etc/services 文件中找到.要查看由互联网号码分派局(IANA) ...
- C#之控制台输入和输出
控制台输出 C# 控制台程序一般使用 .NET Framework Console 类提供的输入/输出服务.Console.WriteLine("Hello World!"); 语 ...