UIday01: UIView及其子类 UIView UILabel frame center bounds 管理视图层次 控制文本显示

来源:互联网 发布:大专php电商网站教程 编辑:程序博客网 时间:2024/04/29 21:15
一、UIView
    1、IOS概述:
        IOS是Apple公司的移动操作系统,主要用于iPhone iPad iPadMini iPod Touch等移动产品
        借助IOS,我们可以开发视频类、美图类、新闻类、音乐类、团购类、电商类、阅读类、出行类、生活服务类、游戏类等应用程序。
        除此之外,IOS还可以与外部设备通信,开发出更多改变生活的产品,比如:智能家居(ios App 控制电视、空调等)、健身产品(将人体的健康状况通过App直观的展现出来)等。
 
        UI(User Interface):用户界面,用户能看到的各种各样的页面元素。
        ios App = 各种各样的UI控件 + 业务逻辑和算法
 
        ios6.0到7.0升级过程中,将原来的UI显示从拟物化到扁平化,前者注重立体、阴影的配搭,后者则更侧重于功能和应用的实现。
        应用分展示类和功能类
            展示类:如 糗事百科、新闻类(比较简单,学完网络之后就可以做出来);
            功能类:如UC浏览器、地图、即时通讯等(地图都第三方做好了,即时通讯难在通信协议)。
 
    2、什么是window,怎样创建一个window
        window是窗口,每个app都需要借助window将内容展现给用户看
        在ios中,使用UIWindow类来表示窗口,通常一个应用程序只创建一个UIWindow对象。
        window的主要作用是呈现内容给用户,我们不会对window做太多操作。
        创建一个window需要三步
        2.1 给window开辟空间,并初始化大小
        2.2 给window设置背景色
        2.3 显示window
 
    3、window如何呈现内容 UIView
        ios中用UIView来表示视图
        前面的ppt里看到的各种UI控件都属于view
        不同的空间代表不同种类的view
        ios中能看到的内容都是view或其子类
 
    4、创建view需要三步
        4.1 定义UIView对象,并初始化开辟空间和给视图设置位置和大小
        4.2 对视图做一些设置(比如背景颜色)
        4.3 将视图添加到window上进行显示
 
    5、ios坐标系
        ios提供了用户布局的平面坐标系,左上角为坐标系的原点
        水平向右:为x的正方向。
        垂直向下:为y的正方向。
        坐标系不是以像素作为划分依据,而是以“点”作为依据
 
    6、frame
        作用:确定自己在父视图坐标系下的位置和大小
        frame是一个结构体,包含2部分内容:origin和size。
        origin也是一个结构体,包含两部分内容:x和y。
        size同样是一个结构体,包含2部分内容:width和height
        frame的origin和size是相对于父视图来说的。
        CGRectMake() 函数可以帮我们快速构造一个CGRect变量
 
    7、center
        作用:视图中心点  当移动视图的时候子视图跟着一起移动  视图是个容器
        center(中心点)也是view重要的属性
        center是一个结构体,包含2个部分 x和y
        center与frame有着密切的联系
        center.x = frame.origin.x + frame.size.width/2;
        center.y = frame.origin.y + frame.size.height/2;
 
    8、bounds
        (一般情况下,建议一定不要修改bounds)
        作用:确定自己在自己视图坐标系下的位置和大小,bounds做修改,子视图位置会发生变化,而父视图本身位置不变。
        bounds(边界)也是view的重要属性,用于定义自己的边界。它同frame一样是一个CGRect结构体变量。
        当一个view设置bounds时,会把自己当成一个容器,定义自己的边界大小以及左上角的初始坐标。
        当子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,而非左上角。
 
    9、管理视图层次
        将摸个视图放到最前面:bringSubviewToFront:
        将某个视图放到最后面:sendSubviewToBack:
        交换两个视图:exchangeSubviewAtIndex:
        移除视图:removeFromSuperview
 
    10、视图的属性:
        hidden  testView.hidden = YES,默认为NO;
        alpha  控制视图的不透明度
        superview   获取本视图的父视图
        subviews    获取本视图的所有子视图
        tag     给视图添加标记,被加过标记的可使用viewWithTag:方法取出
 
 
 
 二、UILabel
 
    1、UILabel 标签 是现实文本的控件。在App中UILabel是出现频率最高的控件。
    UILabel是UIView的子类,作为子类一般是为了扩充父类的功能,UILabel扩展了文字的显示功能
    UILabel 的创建:
        1、开辟空间并初始化
        2、给UILabel设置背景色
        3、给UILabel设置文本信息
        4、显示UILabel窗口
    
 
    2、控制文本显示:
        text:要显示文本的内容
            label.text = @"文本信息";
        textColor:文本内容颜色
            label.textColor = [UIColor redColor];
        textAlignment:文本的对齐方式(水平方向)
            label.textAlignment = NSTextAlignmentLeft;
        font:文本字体
            label.font = [UIFont fontWithName:@"Helvetica-Bold" size:20];//黑体加粗
        numberOfLines 行数
            label.numberOfLines = 3;//label高度若容纳不了3行,没显示的信息以省略号代替
        lineBreakMode 断行模式
            label.lineBreakMode = NSLineBreakByWordWrapping;//以单词为单位换行
        shadowColor 阴影颜色
            label.shadowColor = [UIColor yellowColor];//阴影
        shadowOffset 阴影偏移
            label.shadowOffset = CGSizeMake(2,1);//阴影向x正方向偏移2,向y正方向偏移1.
 

创建一个window:

//创建window分三步:(command+shift+n----ios Application----Single View Application )    // 1.1 获取window 并设置window和屏幕一样大    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];        // 1.2 设置window颜色    self.window.backgroundColor = [UIColor yellowColor];        // 1.3 显示window    [self.window makeKeyAndVisible];

创建一个UIView(第一种方式)

// 创建一个UIView    UIView *v1 = [[UIView alloc]init];        // 设置位置和宽高 frame是一个结构体,用来设置x y w h四个值。    // 设置的点是左上角的点,超出部分有但是显示不出来    v1.frame = CGRectMake(0, 0, 100, 200);        // 颜色 (加完颜色还没有,原因是没有让显示到屏幕上)    // view默认是透明色     v1.backgroundColor = [UIColor blueColor];        // 将v1添加Window上    [self.window addSubview:v1];

查看iphone显示频像素大小

// 查看屏幕大小    NSLog(@"%@",NSStringFromCGRect([UIScreen mainScreen].bounds));    // 3.5寸 230 * 480    // 4.0寸 320 * 568    // 4.7寸 375 * 667    // 5.5寸 414 * 736    

创建一个UIView(第二种方式)

//第二种创建UIView方式:    UIView * v2 = [[UIView alloc]initWithFrame:(CGRectMake(100, 100, 200, 200))];    v2.backgroundColor = [UIColor greenColor];    [self.window addSubview:v2];    NSLog(@"%@",NSStringFromCGRect([UIScreen mainScreen].bounds));        UIView * v3 = [[UIView alloc]initWithFrame:(CGRectMake(0, 0, 100, 100))];    v3.backgroundColor = [UIColor redColor];    //将v3添加到v2上    [v2 addSubview:v3];

父视图和子视图的概念:

frame 和 brunds

// 当一个试图添加显示之后,会生成一套自己的坐标系,以自己的左上角为坐标原点,这套坐标是给自己的子视图使用        // frame(CGRect) 作用:确定自己在父视图坐标系下的位置和大小    NSLog(@"v2 frame : %@",NSStringFromCGRect(v2.frame));        // bounds(CGRect) 作用:确定自己在自己视图坐标系下的位置和大小    // bounds的值是可以改变的,改变之后自身没有影响,会影响子视图的位置    // 千万不要改bounds(在父视图宽150,长200的基础上,子视图左移30,上移50,父视图位置不变)    v2.bounds = CGRectMake(30, 50, 150, 200);    NSLog(@"v2 bounds : %@",NSStringFromCGRect(v2.bounds));

center

// center 视图中心点  当移动视图的时候子视图跟着一起移动  视图是个容器    // 可以决定一个视图位置有两个属性frame 和 center//    v2.center = CGPointMake(200, 200);    [self.window addSubview:v2];

添加视图 有四种方式  addSubview最常用

UIView *v3 = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 200, 200)];    v3.backgroundColor = [UIColor greenColor];    [self.window addSubview:v3];        UIView *v4 = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 200, 200)];    v4.backgroundColor = [UIColor grayColor];        //索引位置以0开始  尽量用addSubview,少用insertSubview//    [self.window insertSubview:v4 atIndex:1];//    // 将一个视图添加到另一个视图的上面//    [self.window insertSubview:v3 aboveSubview:v4];    // 将v4添加在v3的下面    [self.window insertSubview:v4 belowSubview:v3];

管理视图层次 视图管理

UIView * redView = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 200, 200)];    redView.backgroundColor = [UIColor redColor];    [self.window addSubview:redView];        UIView * blueView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 220, 220)];    blueView.backgroundColor = [UIColor blueColor];    [self.window addSubview:blueView];        UIView * greenView = [[UIView alloc]initWithFrame:CGRectMake(120, 120, 235, 235)];    greenView.backgroundColor = [UIColor greenColor];    [self.window addSubview:greenView];        // 3.1 将某个视图放到最前面    //- (void)bringSubviewToFront:(UIView *)view;    [self.window bringSubviewToFront:redView];        // 3.2 将某个视图放到最后面    //- (void)sendSubviewToBack:(UIView *)view;    [self.window sendSubviewToBack:redView];        // 3.3 交换两个视图    [self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1];        // 3.4 移除视图    [blueView removeFromSuperview];

视图属性

UIView *testView = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)];    testView.backgroundColor = [UIColor redColor];    // 4.1 隐藏视图,默认NO//    testView.hidden = YES;        // 4.2 透明度alpha; (0~1 ) 0透明,1不透明    // 这个属性会使所有的子视图变透明(不推荐使用)//    testView.alpha = 1;        //     设置颜色和透明度//    四个参数的取值范围全是0~1        testView.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:arc4random()%256/255.0];        [self.window addSubview:testView];        // 4.3 获取父视图    NSLog(@"%@",testView.superview);    testView.superview.backgroundColor = [UIColor greenColor];        // 4.4 获取子视图    NSLog(@"%@",testView.subviews);        // 4.5 tag (100起)    testView.tag = 101;        //   作用: 出了作用域,使用tag值找到view    UIView *tv1 = [self.window viewWithTag:101];    NSLog(@"%@",tv1);

UILabel 标签  是要显示文本的控件

UILabel * lab1 = [[UILabel alloc]initWithFrame:CGRectMake(50, 50, 200, 500)];    lab1.backgroundColor = [UIColor whiteColor];        // 5.1 设置文字    lab1.text = @"Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.";        // 5.2 设置文字对齐方式    lab1.textAlignment = NSTextAlignmentCenter;        // 5.3 设置文字颜色    lab1.textColor = [UIColor blueColor];        // 5.4 设置文字字体 默认字体大小是10    lab1.font = [UIFont fontWithName:nil size:30];        // 5.5 获取系统字体名字    NSLog(@"%@",[UIFont familyNames]);        // 5.6 设置字号    lab1.font = [UIFont systemFontOfSize:35];        // 5.7 设置行数 设置为零 则自动换行    lab1.numberOfLines = 0;        // 5.8 断行模式 以单词为单位换行    lab1.lineBreakMode = NSLineBreakByClipping;        // 5.9 阴影颜色    lab1.shadowColor = [UIColor redColor];        // 5.10 阴影偏移    lab1.shadowOffset = CGSizeMake(-1, -1);              [self.window addSubview:lab1];    /*  设置label自动换行 且高度自适应  */    在storyBoard中设置Label自动换行,Label高度自适应:         设置label的上 左 右的位置,然后lines设置为0 即可.     // 给label设置背景图<div><p style="margin-top:0px; margin-bottom:5px; padding-top:0px; padding-bottom:0px; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; list-style-type:none; list-style-position:initial; word-wrap:normal; word-break:normal; line-height:21px"><span style="word-wrap:normal; word-break:normal; line-height:21px">     UIColor</span> <span style="word-wrap:normal; word-break:normal; line-height:21px">*color = [</span><span style="word-wrap:normal; word-break:normal; line-height:21px">UIColor</span> colorWithPatternImage<span style="word-wrap:normal; word-break:normal; line-height:21px">:[</span><span style="word-wrap:normal; word-break:normal; line-height:21px">UIImage</span> imageNamed<span style="word-wrap:normal; word-break:normal; line-height:21px">:</span><span style="word-wrap:normal; word-break:normal; line-height:21px">@"itemkaung2.png"</span><span style="word-wrap:normal; word-break:normal; line-height:21px">]];</span> </p><p style="margin-top:0px; margin-bottom:5px; padding-top:0px; padding-bottom:0px; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; list-style-type:none; list-style-position:initial; word-wrap:normal; word-break:normal; line-height:21px">     [myLabel <span style="word-wrap:normal; word-break:normal; line-height:21px">setBackgroundColor</span>:color];</p></div>- (void)setupLabel { 2     //准备工作 3     UILabel *textLabel = [[UILabel alloc] init]; 4     textLabel.font = [UIFont systemFontOfSize:16]; 5     NSString *str = @"222222222222222222222222222222222222222222"; 6     textLabel.text = str; 7     textLabel.backgroundColor = [UIColor redColor]; 8     textLabel.numberOfLines = 0;//根据最大行数需求来设置    9     textLabel.lineBreakMode = NSLineBreakByTruncatingTail;10     CGSize maximumLabelSize = CGSizeMake(100, 9999);//labelsize的最大值11     //关键语句12     CGSize expectSize = [textLabel sizeThatFits:maximumLabelSize];13     //别忘了把frame给回label,如果用xib加了约束的话可以只改一个约束的值14     textLabel.frame = CGRectMake(20, 70, expectSize.width, expectSize.height);15     [self.view addSubview:textLabel];16 }

                                             
0 0