iOS开发UI篇——Button基础
一、简单说明
一般情况下,点击某个控件后,会做出相应反应的都是按钮
按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置
二、按钮的三种状态
1、 normal(普通状态)
默认情况(Default)
对应的枚举常量:UIControlStateNormal
2、 highlighted(高亮状态)
按钮被按下去的时候(手指还未松开)
对应的枚举常量:UIControlStateHighlighted
3、 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];
转载于:https://www.cnblogs.com/leji-28/p/4979227.html
iOS开发UI篇——Button基础相关推荐
- 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方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...
最新文章
- acm数论之欧几里得gcd
- 《浙江省推动数据中心能效提升行动方案(2021-2025年)》出炉
- z.lua 1.7.0 发布,快速回到历史路径,支持 ranger / fz
- if else和switch的效率
- 企业效益真的向好么?
- php中unset函数是在哪一章_PHP unset函数好奇怪 -
- 计算机电缆头子怎么做,电缆头制作怎么算量怎么套定额
- 主从reactor模式
- linux 手动修复分区表,分区表修复
- android 不透明度
- ffmpeg视频裁剪,切割,crop裁剪相关
- 将中文汉字转换成拼音
- 安装SSMS报错:0x80070643
- 获取android设备唯一编号_如何获取Android设备唯一标识码教程
- CSDN学霸课表——系统集成项目管理工程师(软考中级)
- Python编程:实现词云生成(附详细源码)
- 什么是websocket
- 用NT52的boot.ini引导NT60启动Windows7
- 找出1000以内的完数Java
- 为什么开发Java Web都要用框架