一、简单说明

一般情况下,点击某个控件后,会做出相应反应的都是按钮

按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置

二、按钮的三种状态

normal(普通状态)

默认情况(Default)

对应的枚举常量:UIControlStateNormal

highlighted(高亮状态)

按钮被按下去的时候(手指还未松开)

对应的枚举常量:UIControlStateHighlighted

disabled(失效状态,不可用状态)

如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击

对应的枚举常量:UIControlStateDisabled

三、注意点

(1)从Xcode5开始,图片资源都放到Images.xcassets中进行管理,可以使用拖拽的方式添加项目中用到的图片到Images.xcassets中

(2)若干多个控件共用一段代码,通常使用tag。

四、代码示例

(1)

#import "LFViewController.h"@interface LFViewController ()@property (weak, nonatomic) IBOutlet UIButton *headImageView;@end@implementation LFViewController// 在OC中,绝大多数的控件的监听方法的第一个参数就是控件本身
//- (IBAction)left:(UIButton *)button {
//
// NSLog(@"----");
//}
- (IBAction)move
{// 通过frame修改head的位置// 在OC中,不允许直接修改“对象”的“结构体属性”的“成员”// 允许修改“对象”的“结构体属性”// 1. 取出结构体属性CGRect rect = self.headImageView.frame;// 2. 修改结构体成员rect.origin.y -= 20;// 3. 设置对象的结构体属性self.headImageView.frame = rect;
}

(2)

#import "LFViewController.h"/**使用git1. 创建项目时,勾选git2. 开发告一段落后,选择"Source Control""Commit",并编写注释*/// 枚举类型实质上就是一个整数,作用就是用来替代魔法数字
// 枚举类型中,指定了第一个整数之后,后面的数字会递增
typedef enum
{kMovingDirTop = 10,kMovingDirBottom,kMovingDirLeft,kMovingDirRight,
} kMovingDir;#define kMovingDelta 50@interface LFViewController ()@property (weak, nonatomic) IBOutlet UIButton *headImageView;@end@implementation LFViewController- (IBAction)move:(UIButton *)button
{
// CGRect rect = self.headImageView.frame;CGPoint p = self.headImageView.center;// magic number魔法数字,其他程序员看到代码的时候,不知道是什么意思switch (button.tag) {case kMovingDirTop:p.y -= kMovingDelta;break;case kMovingDirBottom:p.y += kMovingDelta;break;case kMovingDirLeft:p.x -= kMovingDelta;break;case kMovingDirRight:p.x += kMovingDelta;break;}[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:1.0];self.headImageView.center = p;[UIView commitAnimations];
}- (IBAction)zoom:(UIButton *)button
{CGRect rect = self.headImageView.bounds;// 在C语言中,关于bool的判断:非零即真if (button.tag) {rect.size.width += 50;rect.size.height += 50;} else {rect.size.width -= 50;rect.size.height -= 50;}// 首尾动画// beginAnimations表示此后的代码要“参与到”动画中[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:2.0];self.headImageView.bounds = rect;
// self.headImageView.alpha = 0;// commitAnimations,将beginAnimation之后的所有动画提交并生成动画[UIView commitAnimations];
}@end

五、补充笔记

1. IBAction的参数

- (IBAction)left:(UIButton *)button

(1) 在OC中,绝大多数的控件监听方法的第一个参数就是控件本身

(2) 默认连线时的参数类型是id

(3) 如果要在监听方法中,方便控件的使用,可以在连线时或者连线后,修改监听方法的参数类型

2. 修改对象的结构体成员

在OC中,不允许直接修改“对象”的“结构体属性”的“成员”,但是允许修改“对象”的“结构体属性”

修改结构体属性的成员方法如下:

(1)使用临时变量记录对象的结构体属性

(2) 修改临时变量的属性

(3)将临时变量重新设置给对象的结构体属性

3. 在程序开发中需要避免出现魔法数字(Magic Number)

使用枚举类型,可以避免在程序中出现魔法数字

(1)枚举类型实质上就是一个整数,其作用就是用来替代魔法数字

(2)枚举类型中,指定了第一个整数之后,后面的数字会递增

4. frame & bounds & center

1> frame可以修改对象的位置和尺寸

2> bounds可以修改对象的尺寸

3> center可以修改对象的位置

5. 首尾式动画

// beginAnimations表示此后的代码要“参与到”动画中

[UIView beginAnimations:nil context:nil];

// setAnimationDuration用来指定动画持续时间

[UIView setAnimationDuration:2.0];

self.headImageView.bounds = rect;

......

// commitAnimations,将beginAnimation之后的所有动画提交并生成动画

[UIView commitAnimations];

iOS开发UI篇—Button基础相关推荐

  1. iOS开发UI篇——Button基础

    一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 1. normal(普通状态) ...

  2. android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...

    先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...

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

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

  4. iOS开发UI篇-在UItableview中实现加载更多功能

    iOS开发UI篇-在UItableview中实现加载更多功能 一.实现效果 点击加载更多按钮,出现一个加载图示,三秒钟后添加两条新的数据. 二.实现代码和说明 当在页面(视图部分)点击加载更多按钮的时 ...

  5. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  6. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

  7. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  8. iOS开发UI篇—实现UITableview控件数据刷新

    iOS开发UI篇-实现UITableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...

  9. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇-UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

  10. iOS开发UI篇—懒加载

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

最新文章

  1. 独家 | 数据转换:标准化vs 归一化(附代码链接)
  2. FMDB支持的事务类型
  3. ITK:使用最小最大曲率流平滑图像
  4. 王爽汇编第九章学习笔记
  5. 观察+|腾讯网易终获游戏版号,但all in 游戏时代已结束
  6. 7000 字,四年多 Java 的 BAT 面经分享!
  7. Ubuntu16.04上安装SU(Seismic Unix)的基本步骤
  8. TableviewController基础
  9. 邮件归档提升信息价值(上)
  10. 猜数字游戏编程C语言0到9,【游戏编程】猜数字游戏(C语言)
  11. CentOS 6.2 mini安装桌面环境
  12. 基于大众点评字体库的字体反爬案例
  13. Java基础面试题整理及答案
  14. 东芝Toshiba DP-2210 打印机驱动
  15. 台北 ModernWeb.tw 参会流水账以及感想
  16. githup用户名密码怎么看_水星无线路由器的密码忘了如何解决【解决方法】
  17. 致我们终将远离的子女
  18. POJ 3295.Tautology
  19. web项目上云_联想Filez—携手浙江中烟,发力“云”端,打造“烟草上云”新势能...
  20. win7计算机自动关机设置在哪里设置方法,win7自动关机怎么设置

热门文章

  1. stl算法:next_permutation剖析
  2. CF 71C. Round Table Knights
  3. 正则表达式的几种字符判断(包括数字,字母组合等)
  4. Could not resolve type alias ‘‘
  5. ArrayList类的使用方法
  6. [BZOJ2753][SCOI2012]滑雪与时间胶囊(特殊的有向树形图)
  7. 【数据结构】顺序线性表的几种常用方法
  8. mmo游戏开发应在profile下运行,才能保证正式运行不卡
  9. fckeditor代码总结
  10. 614 Second Degree Follower