标签:des style blog http color 使用 os io
第一部分:父子视图属性
1. superview : 获得自己的父控件对象。
2. subviews : 获得自己的所有子控件对象。
注意:
1)一个视图最多只能有一个父视图。
2)一个视图可以有多个子视图。
部分代码:
//系统加载完storyboard之后,会自动执行。 - (void)viewDidLoad { [super viewDidLoad]; //ViewController会自动有一个UIView,这个RootView,根视图没有superView。 UIView * mySuperView = self.view.superview; NSLog(@"superView==%@", mySuperView); NSArray * mySubViews = [self.view subviews]; NSLog(@"子视图数量:%i", [mySubViews count]); for (UIView * view in self.view.subviews) { NSLog(@"%@", view); } //子视图的父视图 UIView * sView = _subView1.superview; NSLog(@"子视图的父视图==%@", sView); //(黄色)子视图的子视图 for (UIView * view in _subView1.subviews) { NSLog(@"子视图的子视图===%@", view); } /* 总结: 1. 一个视图最多只能有一个父视图。 2. 一个视图可以有多个子视图。 */ }
第二部分:位置尺寸属性
1. frame
控件所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)
2. bounds
控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x和y永远为0)
3. center
控件中点的位置(以父控件的左上角为坐标原点),通过center属性设置视图位置更加方便
注意:
1)用frame和center可以修改UIView的位置
2)用frame和bounds可以修改UIView的尺寸
3)通常:修改自身位置大小时使用frame,而子视图(控件)在设置位置时,会相对父视图的bounds进行设置
frame和bounds属性区别的示意图
第三部分 标记属性
tag整数
控件的ID(标记),父控件可以通过tag来找到或区分子控件。
部分代码: 根据tag,区分不同的按钮点击。
- (IBAction)ViewProperts:(UIButton *)sender { NSLog(@"sender.tag===%i", sender.tag); switch (sender.tag) { case 0: { NSLog(@"Frame: %@", NSStringFromCGRect(_subView1.frame)); } break; case 1: { NSLog(@"Bounds: %@", NSStringFromCGRect(_subView1.bounds)); } break; case 2: { NSLog(@"Center: %@", NSStringFromCGPoint(_subView1.center)); } break; default: break; } }
第三部分: 形变属性
transform
控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
注意
UIView一次只能应用一个形变属性
设置transfrom会改变UIView的frame属性,但不会改变bounds属性.
CGAffineTransformMakeScale相对UIView的初始状态进行形变.
CGAffineTransformScale相对UIView的当前状态进行形变.
//旋转视图 - (IBAction)onClickRotate:(id)sender { //旋转角度的参数是弧度值 //弧度值是一个浮点数 //180°的角度对应的弧度值是PI, 90° = PI/2 , 45° = PI/4 //--(1)使用CGAffineTransformMakeXXXX方法是相对视图初始位置的变形。 //CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4); //--(2)累加旋转 CGAffineTransform transform = CGAffineTransformRotate(_subView1.transform, M_PI_4); [_subView1 setTransform:transform]; } //缩放视图 - (IBAction)onClickScale:(id)sender { //点一下,放大,再点一下,缩小。 CGAffineTransform transform; if (_subView1.tag == 0) { transform = CGAffineTransformScale(_subView1.transform, 1.2, 1.8); [_subView1 setTag:1]; } else { transform = CGAffineTransformScale(_subView1.transform, 1.0/1.2, 1.0/1.8); [_subView1 setTag:0]; } //sx:水平方向缩放的比例 //sy:垂直方面缩放的比例 //函数: //CGAffineTransform transform = CGAffineTransformScale(_subView1.transform, 1.2, 1.8); [_subView1 setTransform:transform]; } //平移视图 - (IBAction)onClickTranslation:(id)sender { CGAffineTransform transform; transform = CGAffineTransformTranslate(_subView1.transform, 10.0, 20.0); [_subView1 setTransform:transform]; }
第四部分 UIView封装的简单动画效果
//定义动画效果
[UIView beginAnimations:nil context:nil];
// 设置动画持续时间
[UIView setAnimationDuration:.3];
// 需要动画的代码段
[UIView commitAnimations];
//不建议用如下的: XCODE4.1 就不建议这么用了。 可以选择块代码。
//旋转视图 - (IBAction)onClickRotate:(id)sender { CGAffineTransform transform = CGAffineTransformRotate(_subView1.transform, M_PI_4); //**加个动画效果** //1)定义动画效果 [UIView beginAnimations:nil context:nil]; //2)默认动画时间长度为0.2秒,(改为1.0秒) [UIView setAnimationDuration:1.0f]; //设置子视图的形变属性 [_subView1 setTransform:transform]; //3)提交动画效果 [UIView commitAnimations]; }
块代码,实现动画效果:
[UIView animateWithDuration:1.0f animations:^{ [_subView1 setTransform:transform]; } completion:^(BOOL finished) { NSLog(@"动画完成!"); }];
UIView封装了三个块动画方法
[UIView animateWithDuration:animations:]
[UIView animateWithDuration:animations:completion:]
[UIView animateWithDuration: delay: options: animations: completion:]
对比beginAnimations动画的方式,块动画具有以下几点优势:
1)可以在动画完成时做一些其他的任务
2)可以设置动画延迟及动画效果选项
3)块动画支持嵌套
--- iCode , 爱生活。
第2课、UIView的常用属性,布布扣,bubuko.com
标签:des style blog http color 使用 os io
原文地址:http://www.cnblogs.com/iCodePhone/p/3874186.html