UIView的常用属性和方法

@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

 

转载于:https://www.cnblogs.com/studyController/p/5612254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值