转载 OC笔记 - UI基础控件(2015.2.3)
1.UIViewController
每当显示一个新界面时,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏UIView,UIViewController负责管理这个UIView
UIViewController就是UIView的大管家,负责创建、显示、销毁UIView,负责监听UIView内部的事件,负责处理UIView与用户的交互
UIViewController内部有个UIView属性,就是它负责管理的UIView对象 :
@property(nonatomic,retain) UIView *view;
2.退出键盘
resignFirstResponder
当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘
endEditing
只要调用这个方法的控件内部存在第一响应者,就能退出键盘
3.UI控件的基本属性
每一个UI控件都是一个对象
修改UI控件的状态,其实就是修改控件对象的属性
比如修改UILabel显示的文字,就修改UILabel对象的text属性即可
比如修改UIImageView显示的图片,就修改UIImageView对象的image属性即可
不难想到,每一个UI控件肯定都有很多属性,比如:
UIProgressView进度条控件有progress属性(进度值)
UILabel和UITextField都有text属性(显示文字)
… …
虽然,每一个UI控件都有自己的独特属性,但是有些属性是每个UI控件都具备的,比如每一个UI控件都有自己的位置和尺寸、都有自己的父控件、子控件。于是,所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中,比如:
frame :位置和尺寸
center :中心点位置
比如点击“向上”按钮,让按钮的y值减小即可
[objc] view plaincopy
- (IBAction)top:(UIButton *)sender {
CGRect btnFrame = self.headBtn.frame;
btnFrame.origin.y -= 10;
self.headBtn.frame = btnFrame;
}
下面代码是错误的,OC语法规定:不允许直接修改对象的结构体属性的成员
self.headBtn.frame.origin.y -= 10;
- autolayout
如果发现通过代码无法修改控件的位置或者尺寸时,应该去掉storyboard里面的autolayout功能,这是自iOS6开始出现的特性。顾名思义,autolayout是用来自动布局的,用来束缚控件的位置和尺寸。去掉这个功能,控件的位置和尺寸就不再有一些固定的束缚。
5.动画的实现
简易动画大致有2种方式:
头尾式
[objc] view plaincopy
[UIView beginAnimations:nil context:nil];//开始动画
[UIView setAnimationDuration:1.5];//动画持续时间
/* 需要执行动画的代码 */
[UIView commitAnimations];//结束动画
Block式
[objc] view plaincopy
UIView animateWithDuration:0.5 animations:^{
/* 需要执行动画的代码 */
}];
- 通过代码创建控件
[objc] view plaincopy
pragma mark - 通过代码创建按钮
//1.创建按钮
UIButton *btn = [[UIButton alloc]init];
//2.将按钮添加到视图中
[self.view addSubview:btn];
//3.设置按钮的frame
btn.frame = CGRectMake(50, 50, 100, 100);
//4.设置背景图片
//4.1.通过文件名加载图片(凡是PNG图片,都不用加拓展名)
UIImage *image = [UIImage imageNamed:@"btn_01"];
//4.2.设置普通状态下的背景图片
[btn setBackgroundImage:image forState:UIControlStateNormal];
//4.3.设置高亮图片
UIImage *image2 = [UIImage imageNamed:@"btn_02"];
[btn setBackgroundImage:image2 forState:UIControlStateHighlighted];
//5.设置文字
[btn setTitle:@"瞅啥瞅" forState:UIControlStateNormal];
[btn setTitle:@"矜持点" forState:UIControlStateHighlighted];
//6.设置文字颜色
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];
//7.监听按钮点击
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
//另一种方式创建按钮
UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeContactAdd];
//设置按钮位置
btn2.center = CGPointMake(50, 50);
//监听按钮点击
[btn2 addTarget:self action:@selector(btn2Click) forControlEvents:UIControlEventTouchUpInside];
//将按钮加入到视图
[self.view addSubview:btn2];