IOS基础学习-2: UIButton

 

UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关、UIButton按钮、UISegmentedControl分段控件、UISlider滑块、UITextField文本字段控件、UIPageControl分页控件。这些控件的基类均是UIControl,而UIControl派生自UIView类,所以每个控件都有很多视图的特性,包括附着于其他视图的能力。所有控件都拥有一套共同的属性和方法。

具体视图关系如下

1. 创建按钮

1.1 initWithFrame

  1. UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 80, 44)];

1.2 类方法buttonWithType

通常采用自定义方法,这样的方式比较灵活

  1. [UIButton buttonWithType:UIButtonTypeCustom];

和UIButtonTypeCustom等同的还有以下方式:

  1. typedef enum {
  2. UIButtonTypeCustom = 0, // 自定义,常用方式
  3. UIButtonTypeRoundedRect, //白色圆角矩形,类似偏好设置表格单元或者地址簿卡片
  4. UIButtonTypeDetailDisclosure, //蓝色的披露按钮,可放在任何文字旁
  5. UIButtonTypeInfoLight, //小圆圈信息按钮,可以放在任何文字旁
  6. UIButtonTypeInfoDark, //白色背景下使用的深色圆圈信息按钮
  7. UIButtonTypeContactAdd, //蓝色加号(+)按钮,可以放在任何文字旁
  8. } UIButtonType;

2. 设置按钮属性

2.1 Frame属性

  1. btn.frame = CGRectMake(10.0, 10.0, 60.0, 44.0); //x, y , weight, height;

或者:

  1. [btn setFrame:CGRectMake(20,20,50,50)];

2.2 设置标题

  1. [btn1 setTitle:@"点击" forState:UIControlStateNormal]; //设置标题
  2. [btn1 setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal]; //设置标题颜色[btn1 setTitleShadowColor:[UIColor grayColor] forState:UIControlStateNormal ];//标题阴影颜色

2.3设置背景图片

  1.  
  1. [btn1 setImage:[UIImageimageNamed:@"btn1Img"] forState:UIControlStateNormal]; //按钮图片
  2. [btn1 setBackgroundImage:[UIImageimageNamed:@"btn1BgImg"] forState:UIControlStateNormal]; //背景图片

2.4 设置按钮图片内部间距

  1. UIEdgeInsets insets; // 设置按钮内部图片间距
  2. insets.top = insets.bottom = insets.right = insets.left = 10;
  3. btn.contentEdgeInsets = insets; //内容间距
  4. bt.titleEdgeInsets = insets; // 标题间距

3. 按钮状态

3.1 常用状态

forState后,可以选择以下状态,常用的包括:常态,高亮,禁用,选中;

  1. enum {
  2. UIControlStateNormal = 0, //常态
  3. UIControlStateHighlighted = 1 << 0, // 高亮
  4. UIControlStateDisabled = 1 << 1, //禁用
  5. UIControlStateSelected = 1 << 2, //选中
  6. UIControlStateApplication = 0x00FF0000, //当应用程序标志使用时
  7. UIControlStateReserved = 0xFF000000 //为内部框架预留的
  8. };
  9. typedef NSUInteger UIControlState;

3.2高亮或者禁用时,微调属性

高亮时,图像颜色会加深,如果要关闭此属性,请设置adjustsImageWhenHighlighted 为NO

  1. btn1.adjustsImageWhenHighlighted = NO;

禁用时,图像颜色会变浅,如果要关闭此属性,请设置adjustsImageWhenDisabled 为NO

  1. btn1.adjustsImageWhenDisabled = NO;

选中时,可以设置按钮发光,请设置showsTouchWhenHighlighted 为YES

  1. btn1.showsTouchWhenHighlighted = YES;

4. 添加动作

  1. [btn1 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside]; //为按钮的行为添加属性
  2.  
  3. -(void)btnPressed:(id)sender{ //处理按钮按下事件
  4. UIButton* btn = (UIButton*)sender;
  5. if(btn == btn 1){
  6. NSLog(@"btn1 pressed");
  7. }
  8. }

5. 实例

具体见下面的例子。

IOS基础学习-2: UIButton的更多相关文章

  1. 【iOS基础学习随笔-1】-基于对象的程序设计

    一.对象: 1.在基于对象的程序设计中,一个程序分解成若干个不同的对象,每个对象都有自己独有的能力. 2.一个生产线上的一个工位只负责做好一件事.如果生产出的汽车的车门没有漆好,那问题很可能出在负责上 ...

  2. ios 基础学习二

    1:@property  @synthesize 属性(类似java里的get set) 上面那个类原先的实现是这样: #import @interface Photo : NSObject { NS ...

  3. ios基础学习

    action中调用函数方法别忘了冒号1. 各个视图之间的关系要分辨清楚 2. MVC (Model-View-Controller). In this pattern, models keep tra ...

  4. IOS基础学习日志(七)利用dispatch_once创建单例及使用

    自苹果引入了Grand Central Dispatch (GCD)(Mac OS 10.6和iOS4.0)后,创建单例又有了新的方法,那就是使用dispatch_once函数,当然,随着演进的进行. ...

  5. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  6. ios开发之OC基础-ios开发学习路线图

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  7. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  8. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

  9. 零基础学习iOS开发

    零基础学习iOS开发不管你是否涉足过IT领域,只要你对iOS开发感兴趣,都可以阅读此专题. [零基础学习iOS开发][02-C语言]11-函数的声明和定义 摘要: 在上一讲中,简单介绍了函数的定义和使 ...

随机推荐

  1. [BZOJ2761][JLOI2011]不重复数字

    [BZOJ2761][JLOI2011]不重复数字 试题描述 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复 ...

  2. java final 关键字

    1.修饰类当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰.final类中的成员变量可以根据需要设为final,但是要注意fina ...

  3. 【Maven】运行项目

    1.run as maven clean 清除原有的编译结果重新编译一次. 2.run as maven bulid.. goals:package tomcat7:deploy 打包到Tomcat7 ...

  4. PHP获取一年有几周以及每周开始日期和结束日期

    最近接了一个项目,其中有一需求是用php获取一年有几周以及每周开始日期和接触日期.在网上找些资料没有合适的,于是自己做了一份,下面通过两种方式实现PHP获取一年有几周以及每周开始日期和结束日期 代码一 ...

  5. 28. 字符串的排列之第1篇[StringPermutation]

    [题目] 输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则输出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab和cba. [分析] 这是一道很好的 ...

  6. PHP 面向对象

    封装与不封装的区别:   未封装 时 外部随意更改数据   数据 不需要判定 就可以执行    外部直接操作数据 封装:  外部同样可以对数据更改,但需要 调用  类里面的  函数  外部间接操作数据 ...

  7. 激活webstorm2016如何激活webstorm2016永久激活webstorm2016

    没有那么麻烦,我这个方法是简单粗暴: 1.搜webstrom2016,最新的是2016.3 2.官方下载 3.断网,改本地时间,你打算用多久,就把本地时间往未来调多久 4.安装webstorm 5.一 ...

  8. Oracle行转列、列转行的Sql语句总结(转)

    多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_userselect id||username str f ...

  9. Java中的位运算

    昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~  按位非(NOT)(一元运算) ...

  10. WebConfig配置

    安全配置示例 https://msdn.microsoft.com/zh-cn/magazine/gg309184.aspx