一 UIView
UIView是所有视图的父类,UIView的所有的属性和方法,其子类(所有的控件)都能直接使用’
1.1UIView的层次结构
见【Demo】-【1-SuperView SubView】
//1.获得当前视图的唯一父视图
NSLog(@"%@",view1.superview);
NSLog(@"%@",view2.superview);
NSLog(@"%@",view3.superview);
//2.获得视图的所有子视图
NSArray *array = superView.subviews;
NSLog(@"%@",array);
//1.在指定的层面插入一个新视图
// [superView insertSubview:view4 atIndex:1];
//2.在某个视图的下级插入一个新视图
// [superView insertSubview:view4 belowSubview:view3];
// 3.在某个视图的上级添加一个新视图
[superView insertSubview:view4 aboveSubview:view1];
//**************** 非常常用 ***********
//把指定的视图放在最上层(最前面) [********* 重点 *****]
[superView bringSubviewToFront:view1];
//把指定的视图放在最底层
[superView sendSubviewToBack:view3];
//交换两个视图的位置
[superView exchangeSubviewAtIndex:2 withSubviewAtIndex:3];
//判断一个视图是否是另一个视图的子视图 【了解】
BOOL isResult = [superView isDescendantOfView:self.window];
1.2UIView的事件接收注意事项:
父视图不能接受事件(userInteractionEnabled是一个BOOL值,YES 可以响应用户交互,NO 不能响应)
//UILabel默认为NO,UIImageView默认为NO 不能接受事件
// superView.userInteractionEnabled = NO; 修改对象是否能接受事件
1)父视图不能接受事件,则子视图无法接受事件
2)子视图超过父视图部分,不能接受事件
3)同一个父视图下,最上面的视图,首先遭遇事件,如果能够响应,就不会向下传递事件,如果不能响应,事件向下传递。。。以此类推
见【Demo】-【UIView-event】 【重点】
1.3UIView自带的动画 【**** 重点 **】
见【Demo】-【3-UIViewAnimation】
UIView *view = (UIView *)[self.window viewWithTag:100];
//***************1.UIView自带动画的第一种方式
[UIView beginAnimations:nil context:nil]; //开始准备制作动画
//设置动画时间
[UIView setAnimationDuration:2];
if (_flag == NO) {
view.frame = CGRectMake(300, 400, 50, 50);
// view.alpha = 0;
view.backgroundColor = [UIColor blackColor]; //中间过程
_flag = YES;
}else{
view.frame = CGRectMake(20, 20, 150, 150);
view.backgroundColor = [UIColor redColor];
// view.alpha = 1;
_flag = NO;
}
//设置动画效果
// view.frame = CGRectMake(300, 400, 50, 50);
[UIView commitAnimations]; //提交动画
//*******************2.UIView自带动画的第二种方式
UIView *view = (UIView *)[self.window viewWithTag:100];
[UIView animateWithDuration:2 animations:^{
//设置动画效果
view.frame = CGRectMake(300, 480, 10, 10);
//让视图做旋转或者缩放的动画效果
view.transform = CGAffineTransformMakeRotation(M_PI);
}];
不停旋转的写法:
NSTimer *_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timerStart) userInfo:nil repeats:YES];
方法里面写:
UIView *view = (UIView *)[self.window viewWithTag:100];
view.transform = CGAffineTransformRotate(view.transform, M_PI/10);
1.4 停靠模式
指的是控制父视图改变大小时,子视图随着父视图的大小的变化而变化;