zoukankan      html  css  js  c++  java
  • UI基础:UIView(window,frame,UIColor,CGPoint,alpha,CGRect等) 分类: iOS学习-UI 2015-06-30 20:01 119人阅读 评论(0) 收藏

    UIView 视图类,视图都是UIView或者UIView子类
    UIWindow 窗口类,用于展示视图,视图一定要添加window才能显示
    注意:一般来说,一个应用只有一个window

    创建一个UIWindow对象
    UIScreen 屏幕类 [UIScreen mainScreen]主屏幕
    [[UIScreen mainScreen]bounds]获得主屏幕大小
    如:
    1.创建工程
    2.把ARC改为MRC
    3.window的属性由string改为retain
    4.重写dealloc方法,对_window进行释放

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];
    self.window.backgroundColor=[UIColor whiteColor];//设置window的背景颜色
    [self.window makeKeyAndVisible]//将self.window设置为主窗口,并可见

    UIColor 颜色类

    创建视图

    UIView *view=[[UIView alloc]initWithFrame:CGRectMake(50,50,200,200)];//创建一个视图view,坐标50,50 宽和高都是200
    view.backgroundColor=[UIColor redColor];//设置视图背景色为red

    iOS中能够看见的视图都是矩形的.
    frame用来表示view的位置和大小
    位置:

    CGPoint  结构体,用于存放一个点的数据类型
    CGPoint point=CGPointMake(20,30);   //位置坐标是20,30

    //打印

    NSLog(@"%lf",point.x);
    NSLog(@"%lf",point.y);
    NSLog(@"%@",NSStringFromCGpoint(point));//用对象打印

    CGSize 结构体,用于存放视图宽和高
    大小:

    CGSize size=CGSizeMake(100,200);     //视图的宽是100,高是200
    NSLog(@"%lf",size.width);
    NSLog(@"%lf",size.height);
    NSLog(@"%@",NSStringFromCGSize(size));

    //CGRect 结构体,用于存放一个矩形的数据,包括位置和宽高(包含CGpoint和CGSize)

    CGRect rect=CGRectMake(20,30,100,100);   //x,y,width,height
        NSLog(@"%lf",rect.origin.x);
        NSLog(@"%lf",rect.origin.y);
        NSLog(@"%lf",rect.size.width);
        NSLog(@"%lf",rect.size.height);
        NSLog(@"%@",NSStringFromCGRect(rect));

    /*
    设备 尺寸 逻辑点 retain 渲染像素
    3GS 3.5 320*480 NO 320*480
    4 3.5 320*480 YES 640*960
    4S 3.5 320*480 YES 640*960
    5/5S 4.0 320*568 YES 640*1136
    6 4.7 375*667 YES 750*1334
    6P 5.5 414*736 超高清 1242*2208
    */

    //UIView属性
    // 背景颜色.默认背景色是透明的,clearColor

        blueView.backgroundColor=[UIColor cyanColor];
        blueView.hidden=YES;
    //    hidden 是否隐藏 YES 隐藏 NO 显示(默认)

    //alpha 透明度 0.0~1.0 (0.0:代表完全透明 1.0代表不透明.默认是1.0)
    //tag,标记值,tag值100以下的被系统占用了,所以赋值选择100以上
    blueView.tag=100;
    // 父视图根据标记的tag值查找视图

     UIView *findView=[self.window viewWithTag:100];

    其中:
    frame用来表示view的位置和大小
    //// redView.frame.size.width=100;error不能单个赋值
    //// view的frame只能整体赋值
    //// redView.frame=CGRectMake(60, 184, 100, 200);

    center 中心点
    中心点=((x+w)/2,(y+h)/2)

    每一个View都有自己的一套坐标系,默认坐标系的原点在左上角,子视图以父视图的左上角作为原点
    frame:视图在父视图中坐标系的位置和大小
    center:视图的中心点在父视图坐标系的位置
    frame变化center不一定变化(等比缩放的时候,center不会变),center变化frame变化

    bounds:指视图在自身坐标系中的位置
    //// 默认自身坐标系的原点就是视图的左上角
    x>0,y>0 原点左上
    x<0,y>0 原点右上
    x<0,y<0 原点右下
    x>0,y<0 原点左下

    center.frame.bounds的相互影响:
    1.frame修改,会影响center和bounds
    2.center修改,会影响frame,bounds不变
    3.bounds修改,会影响frame,center不变

    . frame bounds
    参考系 父视图 自身
    origin 到父视图原点的距离 到自身原点的距离
    size 自身的宽高 自身的宽高

    两者联系:bounds.size改变,frame也会改变;frame.size改变时,bounds.size也会改变


    . frame center
    参考系 父视图 父视图

    两者联系:frame.origin发生改变,center也会发生改变;center发生改变,frame.origin也发生改变.
    center.x=frame.origin.x+frame.size.width/2;center.y=frame.origin.y+frame.size.height/2


    . center bounds
    参考系 父视图 自身

    两者联系:center发生改变bounds.origin不变.bounds.origin发生变化,center不变

    
    //    用父视图 把 子视图 提前
        [self.window bringSubviewToFront:view1];
    //     用父视图 把 子视图 放至后面
        [self.window sendSubviewToBack:view1];
    //    父视图通过下标交换两个视图的位置
        [self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
    //
        UIView *view3=[[UIView alloc]initWithFrame:CGRectMake(75, 75, 200, 200)];
        view3.backgroundColor=[UIColor yellowColor];
    //    插入视图
    //    [view3.window insertSubview:view3 belowSubview:view1];//插入下面
    //    [self.window insertSubview:view3 atIndex:1];//插入指定位置
    //    [self.window insertSubview:view3 aboveSubview:view2];//插入上面
    //    删除视图
    //    自己把自己从父视图上删除
    //    [view3 removeFromSuperview];
    
        //使用RGB值调颜色
        UIColor *color=[UIColor colorWithRed:COLORVALUE green:COLORVALUE blue:COLORVALUE alpha:1.0];
        view1.backgroundColor=color;
    方法名 描述 示例
    insertSubview:atIndex: 在指定的index处插⼊入⼦子视图 [superview insertSubview:grayView atIndex:1];
    insertSubview:aboveSubview: 在指定的视图上⾯面添加⼦子视图 [superview insertSubview:grayView aboveSubview:redView];
    insertSubview:belowSubview: 在指定的视图下⾯面添加⼦子视图 [superview insertSubview:grayView belowSubview:redView];

    方法名 描述 示例
    bringSubviewToFront: 把指定的⼦子视图移动到最前⾯面 [superview bringSubviewToFront:redView];
    sendSubviewToBack: 把指定的⼦子视图移动到最后⾯面 [superview sendSubviewToBack:redView];
    exchangeSubviewAtIndex: withSubviewAtIndex: 交换两个指定索引位置的⼦子视图 [superview exchangeSubviewAtIndex:0 withSubviewAtIndex:2];
    removeFromSuperview 把receiver从⽗父视图上移除 [redView removeFromSuperview];

    视图重要属性

    属性名 描述 示例
    hidden 控制视图的显隐 redView.hidden = YES;//隐藏redView redView.hidden = NO;//显⽰示redView
    alpha 控制视图的不透明度(⼦子视图也⼀一起 透明),取值范围0~1 redView.alpha = 0.8;
    superview 获取本视图的⽗父视图 UIView *superView = [redView superView];
    subviews 获取本视图的所有⼦子视图 NSArray *subviews = [redView subviews];
    tag 给视图添加标记,被加完标记的视 图可以使⽤用viewWithTag:⽅方法取出 redView.tag = 100,UIView *view = [superview viewWithTag:100];

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    遂宁2017届零诊16题(仅想说明网传答案的不正确)
    当参变分离遇见洛必达
    高考数学九大超纲内容(1)wffc
    给王志红老师构造的函数,想说明搜题软件的解答过程的不严谨!
    记住路径名
    php返回文件路径
    两个字符串合并为一个字符串的各种方法
    global作用域
    二进制字符串的比较
    var_dump — 打印变量的相关信息
  • 原文地址:https://www.cnblogs.com/shaoting/p/4619810.html
Copyright © 2011-2022 走看看