iOS开发UI篇—Button基础
一、简单说明
一般情况下,点击某个控件后,会做出相应反应的都是按钮
按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置
二、按钮的三种状态
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基础相关推荐
- iOS开发UI篇——Button基础
一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 1. normal(普通状态) ...
- android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...
先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...
- iOS开发UI篇—transframe属性(形变)
iOS开发UI篇-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...
- iOS开发UI篇-在UItableview中实现加载更多功能
iOS开发UI篇-在UItableview中实现加载更多功能 一.实现效果 点击加载更多按钮,出现一个加载图示,三秒钟后添加两条新的数据. 二.实现代码和说明 当在页面(视图部分)点击加载更多按钮的时 ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
- iOS开发UI篇—简单介绍静态单元格的使用
iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...
- iOS开发UI篇—实现UITableview控件数据刷新
iOS开发UI篇-实现UITableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇-UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发UI篇—懒加载
iOS开发UI篇-懒加载 1.懒加载基本 懒加载--也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...
最新文章
- 独家 | 数据转换:标准化vs 归一化(附代码链接)
- FMDB支持的事务类型
- ITK:使用最小最大曲率流平滑图像
- 王爽汇编第九章学习笔记
- 观察+|腾讯网易终获游戏版号,但all in 游戏时代已结束
- 7000 字,四年多 Java 的 BAT 面经分享!
- Ubuntu16.04上安装SU(Seismic Unix)的基本步骤
- TableviewController基础
- 邮件归档提升信息价值(上)
- 猜数字游戏编程C语言0到9,【游戏编程】猜数字游戏(C语言)
- CentOS 6.2 mini安装桌面环境
- 基于大众点评字体库的字体反爬案例
- Java基础面试题整理及答案
- 东芝Toshiba DP-2210 打印机驱动
- 台北 ModernWeb.tw 参会流水账以及感想
- githup用户名密码怎么看_水星无线路由器的密码忘了如何解决【解决方法】
- 致我们终将远离的子女
- POJ 3295.Tautology
- web项目上云_联想Filez—携手浙江中烟,发力“云”端,打造“烟草上云”新势能...
- win7计算机自动关机设置在哪里设置方法,win7自动关机怎么设置
热门文章
- stl算法:next_permutation剖析
- CF 71C. Round Table Knights
- 正则表达式的几种字符判断(包括数字,字母组合等)
- Could not resolve type alias ‘‘
- ArrayList类的使用方法
- [BZOJ2753][SCOI2012]滑雪与时间胶囊(特殊的有向树形图)
- 【数据结构】顺序线性表的几种常用方法
- mmo游戏开发应在profile下运行,才能保证正式运行不卡
- fckeditor代码总结
- 614	 Second Degree Follower