您的位置:首页 > 产品设计 > UI/UE

UIView的图层关系

2015-08-05 15:15 190 查看
UIView* myView =[[ UIView alloc]initWithFrame:CGRectMake(0.0,0.0,200.0,400.0)];//这里创建了一块画布,定义了相对于父窗口的位置,
以及大小。

一个 UIView 里面可以包含许多的 Subview(其他的 UIView),而这些 Subview 彼此之间是有所谓的阶层关系,这有点类似绘图软体中图层的概念,下面程式码示演示了几个在管理图层(Subview)上常用的方法,其程式码如下。

UIWindow

UIWindow继承自UIView,关于这一点可能有点逻辑障碍,画框怎么继承自画布呢?不要过于去专牛角尖,画框的形状不就是跟画布一样吗?拿一块画布然后用一些方法把它加强,是不是可以当一个画框用呢?这也是为什么 一个view可以直接加到另一个view上去的原因了。

看一下系统的初始化过程(在application didFinishLauchingWithOptions里面):

UIwindow *mWindow = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

mWindow.backgroundColor = [UIColor grayColor];//给window设置一个背景色

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



//将Subview从当前的UIView中移除

[Subview removeFromSuperview];

//替UIView增加一个Subview

[UIView addSubview:Subview];

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



//将Subview往前移动一个图层(与它的前一个图层对调位置)

[UIView bringSubviewToFront:Subview];

//将Subview往后移动一个图层(与它的后一个图层对调位置)

[UIView sendSubviewToBack:Subview];

在UIView中使用索引Index交换两的Subview彼此的图层层级。

//交换两个图层

[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];

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



//取得Index

NSInteger index = [[UIView subviews] indexOfObject:Subview名称];

替Subview加上NSInteger 的註记(Tag)好让之后它们分辨彼此。



//加上註记

[Subview setTag:NSInteger];

最后是取得UIView中所有的Subview,呼叫此方法会传回一个 NSArray,并以由后往前的顺序列出这些 Subview,下图中是列出范例图片里Root中所有的Subview。



//取的UIView下的所有Subview

[UIView subviews]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: