(1)UIView --UIViewController
UIView 负责界面的显示;
UIViewController 负责界面元素及内容的控制和调度;
每个UIViewController默认都有一个UIView属性,每一个UIView都是一个容器,容纳其他UIView。
(2)程序启动过程简述:
->读取storyboard.storyboard
->创建ViewController
->根据视图storyboard文件中的描述创建ViewController的UIView对象
->将UIView对象显示到手机屏幕上
->监听并响应用户交互
(3)viewDidLoad方法
在加载完storyboard.storyboard后自动执行
<span style="font-size:12px;">- (void)viewDidLoad{ [super viewDidLoad];//必须继承 }</span>
(4)UIView的常用属性
superview :获得父视图
subviews :获得所有子视图
@property(nonatomic,readonly) UIView *superview;
@property(nonatomic,readonly,copy) NSArray *subviews;
(5)frame.bounds.center
• 1. frame
控件所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)
• 2. bounds
控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x和y永远为0)w,h
• 3. center
控件中点的位置(以父控件的左上角为坐标原点),通过center属性设置视图位置更加方便
• 注意
– 用frame和center可以修改UIView的位置
– 用frame和bounds可以修改UIView的尺寸
– 通常:修改自身位置大小时使用frame,而子视图(控件)在设置位置时,会相对父视图的bounds进行设置
frame和bounds属性区别的示意图:
通过frame.orgin.x 和frame.orgin.y的操作对组建进行位置操作
例子:
<span style="font-size:12px;"> CGRect rect=_bt.frame; rect.origin.y +=10; [_bt setFrame:rect];</span>
(5) tag属性
控件的ID(标记),父控件可以通过tag来找到或区分子控件
@property(nonatomic) NSIntegertag;
通过tag来实现多个button点击事件指向一个函数,但是注意函数传入的参数要是(UIButton *)sender
(6)形变属性
• transform:控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
• 注意
– UIView一次只能应用一个形变属性
– 设置transfrom会改变UIView的frame属性,但不会改变bounds属性
– CGAffineTransformMakeScale相对UIView的初始状态进行形变
– CGAffineTransformScale相对UIView的当前状态进行形变
a.旋转:
CGAffineTransformMakeRotation
CGAffineTransformRotate
例子:
CGAffineTransform transfromMake= CGAffineTransformMakeRotation(M_PI_4);
CGAffineTransform transfrom= CGAffineTransformRotate(_subView.transform, M_PI_4);
[_view setTransform:transfrom];
//使用TransformMakexxx方法是相对视图初始位置的形变,所以只能旋转一次
//择角度的参数是弧度值,弧度值是浮点数,180角度对应的弧度是PI, 90 = PI/2;
b.缩放
CGAffineTransform CGAffineTransformScale(CGAffineTransform t,CGFloat sx,CGFloat sy)
c.平移
CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx,CGFloat ty)
(7) 动画效果
a.设置动画效果:
<span style="font-size:12px;">[UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:.3]; // 设置动画持续时间 [UIView commitAnimations];</span>
b.UIView封装了三个块动画方法:
- [UIView animateWithDuration:animations:]
- [UIView animateWithDuration:animations:completion:]
- [UIView animateWithDuration: delay: options: animations: completion:] //delay延时
能实现动画的嵌套,看下面例子
例子:
<span style="font-size:12px;">[UIView animateWithDuration:2.0f animations:^{ [_subView setTransform:transform]; // transform是你设置的动画效果 } completion:^(BOOLfinished) { [UIView animateWithDuration:1.0f animations:^{ [_subView setBackgroundColor:[UIColor redColor]];// 设置视图背景颜色 [_subView setAlpha:0.1f];//设置视图透明度 }]; }];</span>
(8)通过改变button的Tag来操作按钮的状态
例子:
<span style="font-size:12px;">- (IBAction)btAnim:(id)sender { CGAffineTransform tranfrom; if ([_subView tag]==0) { tranfrom = CGAffineTransformScale(_subView.transform, 1.2, 1.5); [_subView setTag:1]; }else{ tranfrom = CGAffineTransformScale(_subView.transform, 1.0/1.2, 1.0/1.5); [_subView setTag:0]; } [_subView setTransform:tranfrom]; }</span>