UIView的常用属性和方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于UIView的常用属性和方法的主要内容,如果未能解决你的问题,请参考以下文章

xcode UIView常用方法属性动画

常用python日期日志获取内容循环的代码片段

iOS 一些常用方法笔记

Xcode自定义代码块

在 IBAction 方法返回后显示 UIView

C#常用代码片段备忘