@start
今天练习的是UIView的常用属性,首先应该新建一个窗口和相应的根视图控制器
1 //新建一个窗口和根视图控制器 2 self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; 3 4 //设置视图控制器 5 UIViewController *controller = [[UIViewController alloc]init]; 6 self.window.rootViewController = controller; 7 //更改视图控制器的属性 8 controller.view.backgroundColor = [UIColor grayColor]; 9 //将视图控制器放入到窗口中 10 [self.window makeKeyAndVisible];
然后应该新建两个view,并将其中一个设置成另一个的子视图
//新建view1 UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 200, 200)]; //设置view1属性 view1.backgroundColor = [UIColor redColor]; //将view1放入到视图控制器中 [controller.view addSubview:view1]; //设置一个view2 UIView *view2 = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 80, 80)]; //更改子视图的颜色 view2.backgroundColor = [UIColor purpleColor]; //将view2设置成view1的子视图 [view1 addSubview:view2];
1.设置透明度
//1.设置透明度 view1.alpha = 0.1;
≥≥其中当父视图view1的透明度改变时,view2的透明度也会随之而改变,但是不清楚当view1的大小变化时,view2会不会随着改变
//
2.子视图集合subView
//创建三个视图 UIView *sbView1 = [[UIView alloc]initWithFrame:CGRectMake(30, 30, 30, 30)]; UIView *sbView2 = [[UIView alloc]initWithFrame:CGRectMake(60, 60, 30, 30)]; UIView *sbView3 = [[UIView alloc]initWithFrame:CGRectMake(90, 90, 30, 30)]; //设置三个视图的颜色 sbView1.backgroundColor = [UIColor yellowColor]; sbView2.backgroundColor = [UIColor greenColor]; sbView3.backgroundColor = [UIColor blueColor]; //将三个视图放入到view1中 [view1 addSubview:sbView1]; [view1 addSubview:sbView2]; [view1 addSubview:sbView3]; //使用数组获取到三个视图 NSArray *arr = view1.subviews; //取出其中一个元素并将其放入到窗口中 UIView *subview1 = [arr objectAtIndex:0]; [controller.view addSubview:subview1];
≥≥其中三个视图都是设置成了view1的子视图,所以利用数组取出后作为controller的子视图,透明度依然还是和view1的透明度相同
≥≥虽然把subview1放入到controller上面,但subview1依然是view1的子视图
//这里出现一个问题,我想通过更改subview1的位置来确认其透明度确实和view1相同
sbView1.frame = CGRectMake(200, 200, 100, 100); sbView2.bounds = CGRectMake(60, 60, 30, 30);
øø更改了很多次subview1的值之后终于发现问题所在,sbView1才是更改位置的必需品,更改subview1的属性没有效果
≥≥经过位置的更改,subview1的透明度确实和view1相同
≥≥同时bounds指的时从现在的bounds的零点坐标开始计算,如果将后面两个数值改为0,会直接把sbView2的大小减少至0
//只更改位置的方法不明
3.是否隐藏
//3.是否隐藏 hidden view2.hidden = YES; view2.hidden = NO;
≥≥当hidden=YES时,view2会直接隐藏,再次更改为NO时,view2会再次显示出来
4.取得父视图
//4.取到父视图 UIView *view = subview1.superview; [controller.view addSubview:view];
≥≥通过XX.superview方法可以取得XX的父视图,并将其改变位置
@end
时间: 2024-11-02 23:30:23