reference:http://mxcvns.lofter.com/post/1d23b1a3_685d59d

首先是继承问题,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详解的更多相关文章

  1. Android开发之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  2. MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box)等.命令按钮就是我们前面多次提到的侠义的 ...

  3. 重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch

    原文:重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, Rad ...

  4. VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box ...

  5. VS2010-MFC(常用控件:按钮控件Button、Radio Button和Check Box)

    转自:http://www.jizhuomi.com/software/182.html 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check ...

  6. WebBrowser控件使用详解

    原文:WebBrowser控件使用详解 方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项 GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项 G ...

  7. 串口通信-MSComm控件使用详解

    串口通信-MSComm控件使用详解 2012年11月13日 09:35:45 他山之石可以攻玉 阅读数:37952更多 个人分类: 控件编程Delphi编程   MSComm 控件通过串行端口传输和接 ...

  8. Flash播放控件属性详解

    Flash 播放控件属性详解 一.属性篇 1.AlignMode(读写)  语法:AlignMode As Long  说明:对齐方式(与SAlign 属性联动).当控件的长宽比例与影片不一致且WMo ...

  9. IOS之按钮控件--Button全解析及使用 分类: ios技术 2015-01-17 17:09 169人阅读 评论(0) 收藏

    IOS开发中伴随我们始终的 最常用的几个空间之一 -- UIButton 按钮,对于button今天在此做一些浅析,并介绍下主流用法以及常见问题解决办法. 首先是继承问题,UIButton继承于UIC ...

随机推荐

  1. android 图片拍照图片旋转的处理方式

    第一种:String str=path; /** * 读取图片属性:旋转的角度 * * @param path * 图片绝对路径 * @return degree旋转的角度 */ private vo ...

  2. mysql数据库主从备份

    近期实验室总是不给通知的就停电,导致我们在不停的恢复服务.在某一个断电的过程中,发现我们的项目管理工具redmine的硬盘挂掉了..因为是部署在虚拟机上的,也没做冗余,数据就丢了..于是反思,我们的m ...

  3. Reverse complement DNA

    用法:python rev_comp.py input.fa out.fa 输入文件为 fasta 格式文件,若输入文件中序列的 header 有 '+' 或 '-' 号标记正负链,则带有 '+' 的 ...

  4. itext操作PDF文件添加水印

    功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...

  5. sealed、new、virtual、abstract与override 总结

    1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于方法或属性时,sealed修饰符必须始终与override一起使用. ...

  6. Android编译,模块的编译和CLEAN

    在Android源代码目录下的build目录下,有个脚本文件envsetup.sh: $ . build/envsetup.sh 注:该命令的前面的逗点(.),相当于source. 执行这个脚本文件后 ...

  7. 转 OGG add trandata 到底做了什么

    有的时候我们做OGG的时候add trandata会出现异常. 这里就剖析一下add trandata到底做了什么 GGSCI (yjfora81 as ggs_admin@testdb) 2> ...

  8. sockaddr结构体

    sockaddr 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 一,用于存储参与(IP)Windows套接字通信的计算机上的一个internet协议(IP)地址.为了统一地 ...

  9. 使用GDB调试Android NDK native(C/C++)程序-转

    最 近写了些需要跨平台兼容的C++库,Android是其中需要兼容的平台之一.区别于Windows,Mac中功能强大的IDE环境,官方并没有为 Android ndk提供太多的支持.因此,尝试了下通过 ...

  10. (转)C++中返回对象的情形及RVO

    http://www.cnblogs.com/xkfz007/archive/2012/07/21/2602110.html 之前有文章介绍过临时对象和返回值优化RVO方面的问题.见此处. 在C++中 ...