zoukankan      html  css  js  c++  java
  • IOS开发-UI基础-视图

     //------------------------------UIWindow--------------------------//

     1、UIWindow:是 UIView 的子类,用于管理、协调应用中显示的窗口   它是视图中的根view

     

     iOS 应用程序通常只有一个UIWindow,应用程序在启动时创建这个UIWindow,并往窗口中加入一或多个视图,然后将它显示出来,UIWindow的大小是根据设备的大小创建的,如果超出设备大小,那超出部分不会被显示,也不能对超的视图的事件进行操作(旋转、点击等)

     (UIWindow 好比是面墙,这面墙的大小是根据这个房间的大小决定的,如果你UIWindow这面墙 超过了房间大小,你在超出房间范围的墙面 贴上你的照片,你在屋里是看不到你贴的照片的 你也不可以在屋里 把屋外墙上贴的照片 摘下来)

    UIWindow主要作用:

    1、他是个容器,给 view 提供展示的区域;

    2、将事件(如:旋转、点击等)分发给 view

    UIWindow的主要属性:

     1、keyWindow :(@property(nonatomic,readonly,getter=isKeyWindow) BOOL keyWindow;) BOOL类型,只读,判断是否是当前应用的keywindow (keywindow 是指可接收到键盘输入及其他非触摸事件的UIWindow,只能有一个keywindow)2、rootViewController:UIViewController (视图控制器)类型,给UIWindow添加一个根视图控制器

    //----------------------------UIView------------------------------//

     

     1、UIView:UIView是视图,代表屏幕上的一个矩形区域。各种UI控件都属于view,不同的控件属于不同种类的视图,iOS中所有能看到的内容都是UIView或其子类。

     2、创建一个视图:初始化视图并给他一个坐标,把这个视图添加到你需要显示的图层上

     

     frame:CGRect类型 就是坐标,是在要添加的视图上的位置和自身的大小。他是一个结构体,这个结构体里面有origin起点位置(在2D中确定一个位置,可以用两个点来确定(如X轴Y轴中的(10,20))),还有size自身的大小,有起点位置了,再设置他的重点位置,就可以得到他的大小

     struct CGRect {//定义了一个叫做CGRect的结构体,里面包含叫CGPoint类型的origin(X、Y起点到原点的距离)和一个叫CGSize类型的size(视图的大小)

     CGPoint origin;

     CGSize size;

     };

     typedef struct CGRect CGRect;//表示struct CGRect和CGRect是同一个东西

     

     视图的层级关系:1、如果两个视图坐标一样 先添加的视图,会被后添加的视图覆盖住

     

     center:CGPoint类型  相对于父视图来说的,视图在父视图坐标系统中的中心点。

     

     bounds:指的是视图在视图本身的坐标系统中的大小(位置起点是原点(0,0,视图的宽,视图的高))。

     

    //center的计算方法

     //    center.x = frame.origin.x - frame.size.width/2;

     //    center.y = frame.origin.x - frame.size.width/2;

     

     

    //-------------------------视图层次关系的调整------------------------//

     在实际开发项目的时候,可能会遇到需要把某个视图  移到最底层,或者移到最上层 等操作 ,我们就用到本节课所讲的层次关系的调整

     主要用到的方法:

     addSubview:添加一个子视图到接收者 并让它在最上面显示出来

     bringSubviewToFront:把指定的子视图移动到顶层

     sendSubviewToBack:移动指定的子视图到它相邻视图的後面

     removeFromSuperview:移除视图

    代码实现:

     

    //我们往同一个父视图上面添加子视图的时候, 系统会自动帮我们 记录一个index 只要添加一个子视图 就会增加1.从0开始。

        

        

        

    //    removeFromSuperview 从父视图移除视图

    //    [gview removeFromSuperview];

        

    //    总结:子视图依赖于父视图, 如果父视图位置发生改变 子视图位置也会发生改变

    //    因为frame是根据它的父视图来定义位置信息的

    //    如果移除父视图  父视图上面上面的子视图也会被移除

     

    //---------------视图中心点-------------------

        

    //    center 中心点

    //    相对于它父视图来说的,改变父视图的中心点

    //    X =  宽/2;Y = 高/2;

        

        

    // -------------三种种方式获取中心点------------------

    //第一种:

    // view.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2);

        

    //第二种:

        

    // view.center =CGPointMake(CGRectGetWidth([UIScreen mainScreen].bounds)/2, CGRectGetHeight([UIScreen mainScreen].bounds)/2);

        

        

    //第三种:

    //    父视图真正的中心点

        view.center = self.window.center;

        

  • 相关阅读:
    第三周作业(二):分析代码
    第三周作业(一):安装VS以及创建单元测试
    作业:随机四则运算
    分数化简算法
    对应用软件:游戏-《上古卷轴5》的点评
    软件工程始发随想
    Siamese Network介绍
    YOLO v3算法介绍
    Residual Network和Inception Network网络架构介绍
    使用迁移学习(Transfer Learning)完成图像的多标签分类(Multi-Label)任务
  • 原文地址:https://www.cnblogs.com/chenhongios/p/4672766.html
Copyright © 2011-2022 走看看