• 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置
  • 按钮也是一种容器,在这一点上跟UIView类似

按钮的三种状态

  • normal(普通状态)
  • 默认情况(Default)
  • 对应的枚举常量:UIControlStateNormal
  • highlighted(高亮状态)
  • 按钮被按下去的时候(手指还未松开)
  • 对应的枚举常量:UIControlStateHighlighted
  • disabled(失效状态,不可用状态)
  • 如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击
  • 对应的枚举常量:UIControlStateDisabled

*要为按钮设置三种状态都不同的外观,那么按钮的Type要设置为Custom

UIButton的常见设置

set

  • - (void)setTitle:(NSString *)title forState:(UIControlState)state;
  • 设置按钮的文字
  • - (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
  • 设置按钮的文字颜色
  • - (void)setImage:(UIImage *)image forState:(UIControlState)state;
  • 设置按钮内部的小图片
  • - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;
  • 设置按钮的背景图片
  • btn.titleLabel.font = [UIFont systemFontOfSize:13];
  • 设置按钮的文字字体(需要拿到按钮内部的label来设置)

get

  • - (NSString *)titleForState:(UIControlState)state;
  • 获得按钮的文字
  • - (UIColor *)titleColorForState:(UIControlState)state;
  • 获得按钮的文字颜色
  • - (UIImage *)imageForState:(UIControlState)state;
  • 获得按钮内部的小图片
  • - (UIImage *)backgroundImageForState:(UIControlState)state;
  • 获得按钮的背景图片

代码创建

// 创建按钮

UIButton *btn = [[UIButton alloc] init];

// 设置背景图片

[btn setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal];

[btn setBackgroundImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];

[btn setBackgroundImage:[UIImage imageNamed:disableImage] forState:UIControlStateDisabled];

// 设置位置和尺寸

btn.frame = frame;

// 监听按钮点击

[btn addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];

[UIKit学习]02.关于UIButton的更多相关文章

  1. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  2. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  3. Python学习02 列表 List

    Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...

  4. Android Testing学习02 HelloTesting 项目建立与执行

    Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...

  5. Java学习02

    Java学习02 1.导入内部的包 一.在包的下面加入下面一句话: import    java.util.Scanner; 二.在类中 Scanner input=new     Sanner(Sy ...

  6. ThinkPhp学习02

    原文:ThinkPhp学习02 一.什么是MVC                M -Model 编写model类 对数据进行操作 V -View  编写html文件,页面呈现 C -Controll ...

  7. JVM学习02:GC垃圾回收和内存分配

    JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...

  8. 2018.12.22 Spring学习02

    Spring学习02 1.使用注解配置Spring 1.1 为主配置文件引入新的命名空间(约束) 添加约束文件xxx-xxx-context.xml 添加到主配置文件中 选择刚才的context.xm ...

  9. 天脉2(ACoreOS653)操作系统学习02

    天脉2(ACoreOS653)操作系统学习02 一.分区内通信方法 分区内通信指同一分区内进程之间的通信.ARINC 653定义的分区内进程通信机制,包括:缓存队列(Buffers-Queue).黑板 ...

随机推荐

  1. Intel VT-X

    VT-x是intel运用Virtualization虚拟化技术中的一个指令集,是CPU的硬件虚拟化技术,VT可以同时提升虚拟化效率和虚拟机的安全性,在x86平台上的VT技术,一般称之为VT-x,而在I ...

  2. 【Centos7】卸载OpenJDK

    一般情况下,centos会自带OpenJDK,Hadoop的运行环境要求自己配置JRE,但在home下配置好了JRE后,使用java -version仍然看到OpenJDK,原因是系统根据$PATH路 ...

  3. win7怎么更换锁屏壁纸

    win7怎么更换锁屏壁纸... -------------------------- 按键盘组合键“Windows+R”可打开“运行”窗口,输入 “gpedit.msc” 按回 ----------- ...

  4. 用NETSH WINSOCK RESET命令修复网络

    之前遇到一种情况,QQ可以正常使用,浏览器无法访问网页.在CMD下ping 主机也提示超时. 最后通过NETSH WINSOCK RESET命令重置WINSOCK目录,成功修复了网络连接. Netsh ...

  5. AndroidTv Home界面实现原理(一)——Leanback 库的使用

    接下去应该是梳理一下 Android Tv 主界面实现原理及解析的一个系列博客了,大体上的安排是先介绍 Google 官方提供的 Leanback 库的使用,如何使用该库来实现简单的 Home 界面, ...

  6. .NET CORE 学习笔记之安装EF【Microsoft.EntityFrameworkCore】扩展报错

    最近在学习.NET CORE ,刚开始就遇到问题了. 安装EF框架的试试就报错, 报错如下: 错误 程序包还原失败.正在回滚“XXX”的程序包更改. 找了好久的方案,网上也没搜到对应的问题和方案,然而 ...

  7. adb 安装apk 报错:Failure [INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]

    这是因为系统里缺少了 Google Play 市场等各种谷歌服务应用,其实是因为版权问题,从 2.0 版本开始 Genymotion  提供的虚拟设备都已经移除了 Google Apps  以及 AR ...

  8. mysql 用多次查询代替一次复杂join查询的优点分析

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt344 多高性能的应用都会对关联查询进行分解.简单地,可以对每一个表进行一次单 ...

  9. # 团队作业8——第二次项目冲刺(Beta阶段)--5.27 seventh day

    团队作业8--第二次项目冲刺(Beta阶段)--5.27 seventh day Day six: 会议照片 项目进展 Beta冲刺的最后一天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计 ...

  10. java中synchronized的使用

    synchronized是Java中的关键字,是一种同步锁. synchronized分对象锁和类的锁两种. (一)通常synchronized 方法和synchronized(this){}都是属于 ...