概述

  • UIButton 是执行自定义代码以响应用户交互的控件。
  • UIButton 其实包含 UIImageViewUILabel 两个控件,UIButton 继承于 UIControl,所以有 addtarget 监听事件

属性和方法

初始化Button不用alloc init方法,使用便利构造器方法

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

UIButton的类型如下

UIButton类型 说明
UIButtonTypeCustom 没有按钮样式,一般设置该样式,根据需要自定义
UIButtonTypeSystem 系统样式按钮,例如导航栏和工具栏中显示的按钮。
UIButtonTypeDetailDisclosure 详细披露按钮。
UIButtonTypeInfoLight 具有浅色背景的信息按钮。
UIButtonTypeInfoDark 信息按钮有一个黑暗的背景。
UIButtonTypeContactAdd 联系人添加按钮。
UIButtonTypePlain 没有模糊背景视图的标准系统按钮。
UIButtonTypeRoundedRect 已经废弃,使用UIButtonTypeSystem代替

UIButton的状态如下

UIButton的状态 说明
UIControlStateNormal 控件的正常状态或默认状态 - 即已启用但未选中或高亮显示。
UIControlStateHighlighted 突出显示的控制状态。按钮处于选中状态时的状态
UIControlStateDisabled 一个控件的禁用状态。
UIControlStateSelected 选择一个控件的状态。
UIControlStateFocused 集中控制状态。
UIControlStateApplication 额外的控制状态标志可用于应用程序使用。
UIControlStateReserved 控制状态标志保留给内部框架使用。

设置frame

[btn setFrame:CGRectMake(100, 100, 100, 30)];

设置某一状态下的标题

[btn setTitle:@"测试" forState:(UIControlStateNormal)];

设置某一状态下的标题颜色

[btn setTitleColor:[UIColor redColor] forState:(UIControlStateNormal)];

设置某一状态下的阴影颜色

[btn setTitleShadowColor:[UIColor purpleColor] forState:UIControlStateNormal];

设置某一状态下的背景颜色

[btn setBackgroundColor:[UIColor blackColor]];

设置标题字体大小

 btn.titleLabel.font = [UIFont systemFontOfSize:30];

设置某一状态下的背景图片(背景图片显示在其标题和前景图像后面。)

[btn setBackgroundImage:[UIImage imageNamed:@"登录logo"] forState:(UIControlStateNormal)];

设置某一状态下的前景图片

[btn setImage:[UIImage imageNamed:@"验证码"] forState:(UIControlStateNormal)];

设置标题内边距

btn.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);   top, left, bottom, right;

设置图片内边距

btn.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);

设置内容内边距

btn.contentEdgeInsets = UIEdgeInsetsMake(10, -30, 10, 10);

标题的阴影改变时,按钮是否高亮显示。默认为NO

btn.reversesTitleShadowWhenHighlighted = YES;

按钮高亮的情况下,图像的颜色是否要加深一点。默认是YES

btn.adjustsImageWhenHighlighted = YES;

按钮禁用的情况下,图像的颜色是否要加深一点。默认是YES

btn.adjustsImageWhenDisabled = YES;

按下按钮是否会发光 默认是NO

btn.showsTouchWhenHighlighted = NO;

返回button 某个状态下的标题

- (nullable NSString *)titleForState:(UIControlState)state;

返回button 某个状态下的标题颜色

- (nullable UIColor *)titleColorForState:(UIControlState)state;

返回button 某个状态下的阴影标题颜色

- (nullable UIColor *)titleShadowColorForState:(UIControlState)state;

返回button 某个状态下的图片

- (nullable UIImage *)imageForState:(UIControlState)state;

返回button 某个状态下的背景图片

- (nullable UIImage *)backgroundImageForState:(UIControlState)state;

返回button 某个状态下的富文本标题

- (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state NS_AVAILABLE_IOS(6_0);

获取按钮当前标题

NSString *title = btn.currentTitle;

获取按钮当前标题颜色

UIColor *color = btn.currentTitleColor;

获取按钮当前阴影标题颜色

UIColor *shandowColor = btn.currentTitleShadowColor;

获取按钮当前按钮内图像

UIImage *image = btn.currentImage;

获取按钮当前标题背景图片

UIImage *backgroundImage = btn.currentBackgroundImage;

获取按钮当前标题富文本

NSAttributedString *aString = btn.currentAttributedTitle;

指定背景边界

- (CGRect)backgroundRectForBounds:(CGRect)bounds;

指定内容边界

- (CGRect)contentRectForBounds:(CGRect)bounds;

指定标题边界

- (CGRect)titleRectForContentRect:(CGRect)contentRect;

指定图片边界

- (CGRect)imageRectForContentRect:(CGRect)contentRect;

给按钮添加点击事件

[btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];

UIButton点击事件如下

UIButton点击事件 说明
UIControlEventTouchDown 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。
UIControlEventTouchDownRepeat 多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。
UIControlEventTouchDragInside 当一次触摸在控件窗口内拖动时。
UIControlEventTouchDragOutside 当一次触摸在控件窗口之外拖动时。
UIControlEventTouchDragEnter 当一次触摸从控件窗口之外拖动到内部时
UIControlEventTouchDragExit 当一次触摸从控件窗口内部拖动到外部时。
UIControlEventTouchUpInside 所有在控件之内触摸抬起事件
UIControlEventTouchUpOutside 所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。
UIControlEventTouchCancel 所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。
UIControlEventValueChanged 当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。
UIControlEventEditingDidBegin 当文本控件中开始编辑时发送通知
UIControlEventEditingChanged 当文本控件中的文本被改变时发送通知。
UIControlEventEditingDidEnd 当文本控件中编辑结束时发送通知。
UIControlEventEditingDidEndOnExit 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。
UIControlEventAllTouchEvents 通知所有触摸事件
UIControlEventAllEditingEvents 通知所有关于文本编辑的事件。
UIControlEventApplicationReserved range available for application use
UIControlEventSystemReserved range reserved for internal framework use
UIControlEventAllEvents 通知所有事件

作者:coder小鹏

ios开发UI篇--UIButton的更多相关文章

  1. iOS开发UI篇—懒加载

    iOS开发UI篇—懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...

  2. iOS开发UI篇—核心动画(转场动画和组动画)

    转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...

  3. iOS开发UI篇—核心动画(关键帧动画)

    转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...

  4. iOS开发UI篇—Modal简单介绍

    iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...

  5. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  6. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  7. iOS开发UI篇—简单的浏览器查看程序

    iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...

  8. iOS开发UI篇—九宫格坐标计算

    iOS开发UI篇—九宫格坐标计算 一.要求 完成下面的布局 二.分析 寻找左边的规律,每一个uiview的x坐标和y坐标. 三.实现思路 (1)明确每一块用得是什么view (2)明确每个view之间 ...

  9. iOS开发UI篇—字典转模型

    iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 // // LFViewController.m // 03-应用管理 // // Creat ...

随机推荐

  1. 树莓派发射FM波——搭建私人小电台

    树莓派的应用十分广泛,有很多奇思妙想的应用非常有趣,在这里我们想实现一个小电台的功能,但是在这里需要说明,私人架设电台是违法行为,所以本案只作为自我娱乐所用,不能发射大功率的信号干扰正常的FM频段. ...

  2. 数组转换list集合问题

    1问题的起因: 项目总要使用一个方法把数组转换成list集合,百度说有这个方法Arrays.asList可以实现 2结果报错 抛出java.lang.UnsupportedOperationExcep ...

  3. 一个Interface 继承多个Interface 的总结

    我们知道在Java中的继承都是单继承的,就是说一个父类可以被多个子类继承但是一个子类只能有一个父类.但是一个接口可以被不同实现类去实现,这就是我们说的Java中的多态的概念.下面我们再来说一下接口的多 ...

  4. 团队开发心得(May)

    经过之前一个多月的准备工作(包括去求调研.技术选型.知识储备等等),这个月开发工作终于步入正轨,下面谈谈我的心得体会. 个人收获方面,我选择了加入数据库小组,进行数据库方面的开发.刚开始的时候我是个小 ...

  5. [VS2008] [.NET 3.5] 如何解决 The imported project "C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.CSharp.targets" was not found

    重新安装或者修复 NETCFv35PowerToys https://download.microsoft.com/download/f/a/c/fac1342d-044d-4d88-ae97-d27 ...

  6. a标签 按钮化使用

    a标签 按钮化使用 a href="javascript:void(0);" onclick="js_method()" a href="javasc ...

  7. ASP.NET MVC 5搭建自己的视图基架 (CodeTemplate)

    我们知道,在MVC项目中添加视图时,在添加面板有模板可以选择,这里会有人疑问,这个模板位于哪里?我可以搭建自己的基架吗? 首先回答第二个问题,答案是当然可以 我这里使用的是Visual Studio ...

  8. Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides

    https://blog.csdn.net/hanchao5272/article/details/79819460 转载自:https://blog.bbzhh.com/index.php/arch ...

  9. Python基础第一篇-------python的介绍

    一.python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

  10. [翻译] USING GIT IN XCODE [1] 在XCODE中使用GIT[1]

    USING GIT IN XCODE http://www.cimgf.com/2013/12/10/using-git-in-xcode/ Git has become a very popular ...