做用:显示文字android
属性:数组
text属性:是label的文字框架
alignment属性:对齐方式ide
lines属性:若是为0,不限制行数,可是Label须要有足够大的空间显示内容函数
Action:无性能
做用:在一个区域内,显示图像。学习
注意:UIImage是一个二进制的图像数据,而UIImageView是用来显示图像数据的区域动画
属性:spa
image属性:用于设置在图像视图中显示的图片代理
要从bundle加载图像,可使用[UIImage imageNamed:]方法。
UIImageView自己能够作序列帧动画,要使用序列帧动画,咱们须要指定三个属性:
1) animationsImages:序列帧图像数组
2) animationDuration:一组序列帧图片播放完成须要的时间
3) animationRepeatCount:序列帧动画重复的次数,默认为0,循环播放
设置完UIImageView的动画属性以后,须要使用startAnimation方法启动动画,若是要中止动画,可使用stopAnimation方法。
另外,可使用isAnimating属性,判断当前是否正在播放动画
Action:无
做用:用户交互的主要控件,有六种类型,其中自定义类型使用最为广泛
属性:
title属性:是按钮的文字
titleColor属性:是按钮的颜色
image属性:是按钮显示的图像
提示:若是同时指定了image和title属性,当按钮空间不够时,image优先显示;另外,image属性在按钮中不会变形
backgroundImage属性:是按钮的背景图片,注意,按钮的背景图片会根据按钮的实际大小拉伸,在使用背景图片时,尤为须要注意按钮的大小
backgroundColor属性:按钮的背景颜色属性,仅在自定义类型的按钮有效
使用技巧:一般在指定同一类型的按钮操做时,咱们习惯用tag区分按钮,而后统一调用同一个方法
注意:设置按钮属性的同时,须要指定属性应用的状态,一般使用Normal状态,Highlight是按钮长按下的状态
Action:TouchUpInside
做用:供用户输入或编辑文本
属性:
text属性:得到或设置文本框中的文字
使用文本框控件时须要注意几项事情:
1) 在输入不一样类型的文本时,须要注意键盘的类型,譬如输入QQ号要使用数字键盘。输入身份证号,须要自定义数字键盘或者默认打开数字的全键盘
2) 使用自定义数字键盘时,若是在越狱的机器上,可能会出现格式显示问题
3) 若是界面上有多个文本框供用户输入时,要注意回车键的设置,实现文本框由上至下的切换,切换到最后一个文本框,再按回车键时,调用对应的确认按钮的方法
4) 须要注意关闭键盘,关闭键盘有两种方法:
a) [self.view endEditing:YES];
b) [textField resignFirstResponder];
撤销自身第一响应者的身份
要获取键盘输入的焦点,能够设置textField的becomeFirstResponder属性,让文本框成为第一响应者便可。
5) 要监听文本框的回车事件,须要设置文本框的delegate,同时让视图控制器听从<UITextFieldDelegate>协议
以上四个控件主要应用在应用程序中。
做用:设置某一个属性开或者关的状态
属性:
state属性:on/off
使用isOn能够判断开关当前是否打开
Action: valueChanged
做用:容许用户使用手指拖动滑块,产生数值变化的控件
属性:
minimumValue:滑块的最小数值
maximumValue:滑块的最大数值
value:滑块的当前数值
须要注意的是:滑块没有步长,滑块数值一般是连续变化的,这样能够保证滑块动画的连续性,所以,咱们在使用滑块时,须要格外留意是否有重复刷新的状况,例如照片查看器示例程序
Action: valueChanged
做用:用户点击“+”数值增长,点击“-”数值减小
属性:
minimumValue:滑块的最小数值
maximumValue:滑块的最大数值
value:滑块的当前数值
stepValue:滑块数值变化的步长
wraps:是否环绕,设置了环绕属性以后,当数值到达最大值时会回复到最小值,产生环绕效果。若是没有设置环绕属性,当到达最大值时,“+”会变灰禁止用户点击,当到达最小值时,“-”会变灰禁止用户点击
Action: valueChanged
做用:用户同一时间只能选择一个选项,与开关不一样,它能够设置多个选项供用户选择
属性:
selectedSegmentIndex属性:用户当前选中的选项卡索引,第一个选项卡索引对应的数值是0
Action: valueChanged
以上四个控件主要应用在设置页面。
做用:
1) 是一个容器,能够容纳任何的控件或者视图
2) 全部的控件,最终均继承自UIView
属性:
1) 继承类属性:
superView:每个UIView最多只能有一个父视图,注意:UIViewController的根视图没有父视图。
subViews:当前视图所包含的子视图/控件
2) 位置大小类属性
frame:设置视图的边框
bounds:设置视图的边界,用于指定视图的大小,经常使用于视图的子控件设置位置,由于bounds属性的原点,永远是(0,0)
center:设置视图的中心点位置,一般用于指定视图的位置,在视图动画中比较经常使用
注意:
frame和center能够指定UIView的位置
frame和bounds能够指定UIView的大小
3) 形变属性
transform:能够指定视图的平移、旋转和缩放属性
UIView封装的简单动画效果
[UIView beginAnimations:nil context:nil];
// 设置动画持续时间
[UIView setAnimationDuration:.3];
// 须要动画的代码段
[UIView commitAnimations];
UIView封装的块动画
对比beginAnimations动画的方式,块动画具备如下几点优点:
凡是带有Mutable字样的类型,都是可变的,若是存在相对应的没有Mutable字样的类型,都是不可变的,一旦初始化以后,就不能够再修改。
1.1 字符串转数字 integerValue
1.2 字符串经常使用方法:[NSString stringWithFormat:@”格式字符串”, 参数…]
1.3 若是要表示:0001之类的数字格式可使用”%04d”之类的格式字符串
2.1 是数字的NS对象的表达形式,若是要把数字添加到数组或者字典中,必需要进行转换,同时要使用数组中的数字,还须要转换成对应的数字。
2.2 要转换数字可使用OC提供的包装方法:@(int)
2.3 要把NSNumber转换成字符串,须要使用stringValue方法
3.1 是日期的数据类型
3.2 经常使用类方法[NSDate date]取出当前的系统时间
3.3 timeIntervalSinceDate方法能够计算两个时间的差值,以秒为单位
3.4 特别须要注意,不要把NSDate和NSData搞混,这对于初学者,是常常犯的错误。
4.1 NSArray是不可变的,NSMutableArray是可变的,一般在使用时,能够用一个自定义方法,初始化一个NSMutableArray,而在方法以外,统一使用NSArray
4.2 在NSArray中,能够插入任何类型的对象,使用方法是:addObject(id)
4.3 要取出NSArray中的对象,可使用整数下标获取,例如:array[i]
4.4 须要注意的是:若是要将int、float、double、NSInteger、CGFloat、CGPoint、CGRect、CGSize这些类型的数据插入数组以前,都须要进行类型转换
4.5 若是从Bundle中读取数组,可使用arrayWithContentOfFile:方法
5.1 字典和NSArray很是相似,不过字典是使用字符串键值进行维护的,它的可读性更强
5.2 在数据字典中,字符串的键值不可以重复
5.3 要向数据字典中添加对象,须要使用setValue:forKey:方法
5.4 要从数据字典中获取对象,须要使用dict[@”keyName”];
5.5 若是要从Bundle中读取字典,可使用dictionaryWithContentsOfFile:方法
负责数据的保存以及相关的处理方法,Model不知道它会被谁调用,也不知道何时会被调用
负责界面上元素的显示,一般在不少iOS应用程序中,视图只是StoryBoard或者xib文件,通常不会在视图中写太多的代码
负责界面上数据的显示,以及用户与界面发生交互以后,通知数据模型,作相应的处理。控制器是视图与数据模型之间的纽带和桥梁。一般在大多数应用程序中,视图控制器中的代码是最多的。
在iOS开发中,每个Controller都有切仅有一个跟视图,若是使用Storyboard创建的应用程序,Xcode会自动设置一个view做为视图控制器的跟视图,也是第一个显示在用户面前的视图。
代理协议机制在iOS开发中,是很是经常使用的一种消息传递机制,主要用于子视图向父视图传递数据,代理协议是单向消息传递。
要使用代理协议,须要如下几个步骤:
1) 在子视图控制器中定义协议,而且定义若干协议方法,注意:只有方法,而没有方法的具体实现。协议的名称一般是子视图控制器的类名+Delegate
2) 在子视图控制器中定义代理属性,代理的属性是weak
3) 子视图控制器中,在须要时直接经过_delegate调用协议方法,就能够执行父视图控制器中的相应方法的实现
1) 听从子视图控制器头文件中定义的协议
2) 在推出子视图控制器前,设置本身是子视图控制器的代理,一般在prepareSegue方法中实现
3) 实现子视图控制器中的协议方法,等待子视图控制器的调用
使用实例代码以下:
// 第一个参数:多长时间会触发一次,以秒为单位
// 第二个参数:若是看到函数的参数有target,通常状况下,都用self
// 第三个参数:SEL,须要调用其余的方法,就是每次时钟被触发的时候,去执行的方法
// 最多能够带一个参数,就是时钟自己
// 第四个参数,暂时不用考虑,设置成nil
// 第五个参数:是否重复,一般会设置YES
_gameTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
在时钟触发方法中,可使用sender.fireDate获取到时钟被触发的时间
注意:使用NSTimer的时候,千万不要忘记调用invalidate方法关闭时钟。
NSTimer可能不会是及时相应触发时间的,它的执行优先级相对较低,所以,不要使用NSTimer去作实时响应需求较高的周期性操做。