UIButton
A.素材准备
1.图片素材放置到Images.xcassets中
 
 
B.按钮状态
1.normal:默认状态 Default
对应的枚举常量:UIControlStateNormal
 
2.highlighted(高亮状态)
按钮被按下去的时候(未松开)
对应的枚举常量:UIControlStateHighlighted
 
3.disabled(失效状态,不可用状态)
如果enable属性为NO,就是处于disabled状态,代表按钮不可被点击
对应的枚举常量:UIControlStateDisabled
 
 
C.按钮属性
Type:更改为Custom,消除按下按钮时背景的透明效果
State Config:选择按钮状态,进而设置不同状态下按钮的其他属性
 
D.autolayout 自动布局
autolayout会干扰手动布局编码的运行
 
E.使用tag标记组合多个按钮使用一个方法
 1 - (IBAction)move:(UIButton *) sender {
2 CGRect tempFrame = self.head.frame;
3
4 CGFloat delta = 10;
5 switch (sender.tag) {
6 case 1:
7 {
8 tempFrame.origin.y -= delta;
9 break;
10 }
11 case 2:
12 {
13 tempFrame.origin.x += delta;
14 break;
15 }
16 case 3:
17 {
18 tempFrame.origin.y += delta;
19 break;
20 }
21 case 4:
22 {
23 tempFrame.origin.x -= delta;
24 break;
25 }
26 default:
27 break;
28 }
29
30 self.head.frame = tempFrame;
31 }
 
F.使用center和bounds修改位置、尺寸
使用center改变位置,效果和使用frame差不多
使用bounds改变尺寸,能以中心为基点改变尺寸
 
G.位置移动动画
    // 开始动画
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1];
(位置改变代码)...
    // 提交动画
    [UIView commitAnimations];
 
 
H.手动编码创建按钮
        // 1.创建一个自定义的按钮
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
      
        // 2.添加图片
        [button setImage:[UIImage imageNamed:imageName] forState:state];
      
        // 3.设置尺寸、位置
        button.frame = rect;
      
        // 4.设置tag, tag最好不要用0,因为默认所有都是0,会出现混乱错误,使用viewWithTag:0得到的是当前控件,不是子控件
        button.tag = [[buttonDic objectForKey:@"tag"] intValue];
      
        // 5.监听按钮点击
        [button addTarget:self action:@selector(moveImage:) forControlEvents:UIControlEventTouchUpInside];
      
        // 6.添加按钮
        [self.view addSubview:button];
 
 
 
 

[iOS基础控件 - 2] 按钮的基本使用的更多相关文章

  1. [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)

    A.概述      在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能      1.按钮点击后,显示为“已下载”,并且不 ...

  2. iOS 基础控件(下)

    上篇介绍了UIButton.UILabel.UIImageView和UITextField,这篇就简短一点介绍UIScrollView和UIAlertView. UIScrollView 顾名思义也知 ...

  3. [iOS基础控件 - 7.0] UIWebView

    A.基本使用 1.概念 iOS内置的浏览器控件 Safari浏览器就是通过UIWebView实现的   2.用途:制作简易浏览器 (1)基本请求 创建请求 加载请求 (2)代理监听webView加载, ...

  4. [iOS基础控件 - 6.11.3] 私人通讯录Demo 控制器的数据传递、存储

    A.需求 1.搭建一个"私人通讯录"Demo 2.模拟登陆界面 账号 密码 记住密码开关 自动登陆开关 登陆按钮 3.退出注销 4.增删改查 5.恢复数据(取消修改)   这个代码 ...

  5. [iOS基础控件 - 6.9] 聊天界面Demo

    A.需求 做出一个类似于QQ.微信的聊天界面 1.每个cell包含发送时间.发送人(头像).发送信息 2.使用对方头像放在左边,我方头像在右边 3.对方信息使用白色背景对话框,我方信息使用蓝色背景对话 ...

  6. iOS基础 - 控件属性

    一.控件的属性 1.CGRect frame 1> 表示控件的位置和尺寸(以父控件的左上角为坐标原点(0, 0)) 2> 修改这个属性,可以调整控件的位置和尺寸 2.CGPoint cen ...

  7. [iOS基础控件 - 6.11.4] storyboard 的 Segue

    A.概念 storyboard中的跳转事件连线,都是一个UIStoryboardSegue对象(Segue)   来源控制器      触发控制器 目标控制器      跳转到的控制器     Seg ...

  8. [iOS基础控件 - 6.10.2] PickerView 自定义row内容 国家选择Demo

    A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用   B.实现步骤 1.准备plist文件和国旗图片     2.创建模型 // // Flag.h // Co ...

  9. [iOS基础控件 - 6.9.1] 聊天界面Demo 代码

    框架:   所有代码文件:   Model: // // Message.h // QQChatDemo // // Created by hellovoidworld on 14/12/8. // ...

随机推荐

  1. GCC警告选项例解

    程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵.遇到任意一条编译器警告都坚决不放过.有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splin ...

  2. foreman1.3安装

    一.环境: centos 6.3 64bit 二.安装yum源: rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release ...

  3. java编解码技术,json序列化与二进制序列化

    1.何为json序列化与二进制序列化 通常我们在程序中采用的以json为传输,将json转为对象的就是json序列化了.而二进制序列化通常是我们将数据转换为二进制进行传输,然后在进行各类转换操作 2. ...

  4. GPRS连接失败问题

    备注:采用的是SIMCOM的SIM900模块 1. GPRS连接失败问题 2013.08.06测试9台C2000两次,两次之间是机器拿开电池,间隔40分钟左右,每次都出现一台(但不是同一台): ⑴9台 ...

  5. poj3686The Windy's (KM)

    http://poj.org/problem?id=3686 拆点很巧妙 将每个M个点拆成m*n个点 分别表示第i个玩具在第j个机器上倒数第K个处理 假设这k个玩具真正用在加工的时间分为a1,a2,a ...

  6. [原]Unity3D深入浅出 - 光源组件(Light)

    Unity中提供了四种光源: Directional light: 方向光,类似太阳的日照效果. Point light: 点光源,类似蜡烛. Spotlight: 聚光灯,类似手电筒. Area L ...

  7. 思考之spring的ioc

    控制反转 英语:Inversion of control,缩写为IoC 我想很多同学都会思考过这样的一个问题,控制反转,什么地方反转了,是不是翻译的不对? 这里插一句 当年马云借着盖茨的嘴说:“互联网 ...

  8. Java [leetcode 22]Generate Parentheses

    题目描述: Given n pairs of parentheses, write a function to generate all combinations of well-formed par ...

  9. 多线程程序设计学习(12)Thread-soecific storage pattern

    Thread-Specific-Storage[线程保管箱] 一:Thread-Specific Storage的参与者--->记录日志的线程(ClientThread)--->负责获取不 ...

  10. C#.NET开源项目、机器学习、商务智能

    所以原谅我,不能把所有的都发上来,太杂了,反而不好. 1..NET时间周期处理组件 这个组件很小,主要是对时间日期,特别是处理时间间隔以及时间范围非常方便.虽然.NET自带了时间日期的部分功能,但可能 ...