zoukankan      html  css  js  c++  java
  • iOS之美: UIView 与 UIWindow之间的关系

    转自:http://leopard168.blog.163.com/blog/static/168471844201381584533466/

    面对iOS初学者,总会被问到一些不常被关注的问题,比如: UIView 与 UIWindow是什么关系? 谁继承的谁?  从字面意思来看,貌似UIWindow 是UIView 的父类, 按说,应该是先有窗口,再有视图?  果真如此么?

    事实上, UIView 继承于 UIWindow, 由Apple的官方文档为证。 如下图。

    iOS之美: UIView 与 UIWindow之间的关系 - 悠悠电台 - 悠悠电台——移动流媒体收音机

    UIWindow继承自UIView,关于这一点可能有点逻辑障碍,画框怎么继承自画布呢?视图怎么继承于窗口呢? 虽说UIWindow 继承于UiView, 但这个 UIWindow 也是一个重中之重的View。 这里,打个比方: UIWindow 虽说也是个View,但它是一个首席View。

    看一下App的初始化过程吧:

    在application didFinishLauchingWithOptions里面, 有下面一段code。

    self.window =[[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
    self.window.backgroundColor =[UIColor grayColor];       //给window设置一个背景色  
    [self.window makeKeyAndVisible];     //让window显示出来  

    首先创建一个Window, 之后才在 Window 之上叠加多个View. 
    UIView的使用方法 
    一个 UIView 里面可以包含许多的 Subview(其他的 UIView),而这些 Subview 彼此之间是有层级关系的。这有点像PS(photoshop)中的图层的概念。下面的代码,演示了View 管理常用的方法:

    1.首先是大家最常使用的新增和移除Subview

    [Subview removeFromSuperview];     //将Subview从当前的UIView中移除 
    [UIView addSubview:Subview];     //替UIView增加一个Subview 

     
    2.UIView中将Subview往前或是往后移动一个图层,往前移动会覆盖住较后层的Subview,而往后移动则会被较上层的Subview所覆盖。

    [UIView bringSubviewToFront:Subview];       //将Subview往前移动一个图层(与它的前一个图层对调位置)//将Subview往前移动一个图层(与它的前一个图层对调位置)
    [UIView sendSubviewToBack:Subview];      //将Subview往后移动一个图层(与它的后一个图层对调位置)



    3.UIView中使用索引Index交换两个Subview彼此的图层层级。
    [UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];    //交换两个图层

     

    4.使用Subview的变数名称取得它在UIView中的索引值(Index )。

    NSInteger index =[[UIView subviews] indexOfObject:Subview名称];       //取得Index  



    5.Subview加上NSInteger标记(Tag),以便后续区分不同的View
    [Subview setTag:NSInteger];       //加上标记
    [UIView viewWithTag:NSInteger];  //通过标记得到view 返回值为UIView
     
    6.最后是取得UIView中所有的Subview,调用此方法会传回一个NSArray,并按照从后往前的顺序列出这些Subview,以下代码列出Root中所有Subview

    [UIView subviews];        //取的UIView下的所有Subview 

  • 相关阅读:
    面向过程思想理解:
    Ajax的get请求向服务器请求数据五步骤?
    什么是Ajax无刷新技术?
    Ajax和JavaScript的区别
    为什么要用ajax
    好文章分享
    easyui系列之表单二Combogrid,Form,filebox,CheckBox(3)
    属性vs字段的关系
    jQuery-Load方法
    .Net 百度经纬度转高德
  • 原文地址:https://www.cnblogs.com/wangpei/p/3538684.html
Copyright © 2011-2022 走看看