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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值