UIView常用方法

在iPhone开发中,一个应用程序应该只有一个UIWindow的实例,UIWindow在iPhone中是UIView的一个特殊子类,在程序初始化时,通过装载MainWindow.xib或者在代码中创建,它的大小应该就是手机屏幕的大小,并且不应该像普通的UIView一样,设置UIWindow实例——一个特殊的UIView实例——的UIView中的属性。

一个UIView的实例就是一个视图,表示的是屏幕上的一块矩形区域,负责这块矩形区域的描绘以及和用户的交互。

一个UIViewController的实例往往对应一组UIView,这一组UIView的特征是充满一整个屏幕,并且同时出现同时消失,也可以认为一个UIViewController对应的是一个屏幕的界面,来管理这个屏幕的界面的数据,以及这个屏幕的界面所需要做出的对某些事件的相应,如一个屏幕的出现,消失,甚至是屏幕方向的变化等等。一个UIViewController的实例必然对应至少一个UIView实例,而这个UIView的实例应该是一个全屏的视图对象。


 

UIView进阶参考:http://my.oschina.net/rareliu/blog/24113


windows没有可显示的内容,提供了一个基本的容器container放置views。view定义了一系列你想要显示的内容,view之间可以嵌套显示,即superView,subView

view用来显示内容,一个view控制着应用窗口上的一块矩形区域,主要负责绘制内容,监听事件,管理subView的布局layout


 superview  property

返回该view的superView

  subviews  property

返回包含该view的subView的一个数组nsarray,数组中的顺序代表了在屏幕上的显示顺序

  window  property

返回该view的window,如果没有返回nil


对subView的操作

– addSubview:

添加一个view到该view的subView列表中,位于栈尾,其他view的上面,最先显示。

 

C代码   收藏代码
  1. IMGView *imgView = [[IMGView alloc] initWithFrame:CGRectMake(10, 0, 300, 300)];  
  2. [self.view addSubview:imgView];  
  3. [imgView release];  
 

 

Objective c代码   收藏代码
  1. <span style="font-size: medium; color: #ff0000; font-family: Arial; line-height: 19px;">   addSubview一次,此方法会把你传过去的对象retain一次,那么此时imgView的retainCount为2。self.view变为它的第二个持有者,所以最后要release一次。参考:The receiver retains view. If you use removeFromSuperview to remove view from the view hierarchy, view is released.</span>  

 

– bringSubviewToFront:

把特定的subView移到subView Array的末尾end(最先显示)放到栈的最上面,最先显示

– sendSubviewToBack:

把特定的subView移到subView Array的最开头beginning(最后显示) 放到栈的最下面,最后显示

– removeFromSuperview

把view从superView的subView中删除

– insertSubview:atIndex:

index从0开始,不能大于subViews的count

– insertSubview:aboveSubview:

– insertSubview:belowSubview:

– exchangeSubviewAtIndex:withSubviewAtIndex:

切换两个subView的在栈中的位置

– isDescendantOfView:       

    用于判断superView

使用方法:BOOL flag = [self.view isDescendantOfView:fatherViewController.view];

 

 

setNeedsDisplaysetNeedsLayout使用:

    这两个方法与drawRect方法有关,如果不绘制的话不需要关心。

首先两个方法都是异步执行的,而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。setNeedsDisplay方便绘图,而layoutSubViews方便出来数据,刷新一个UIView的话,调用它的setNeedsDisplay


 

clipsToBounds BOOL(YES/NO) 

决定了子视图的显示局限。具体的说,就是当取值为YES时,剪裁超出父视图局限的子视图项目组;当取值为NO时,不剪裁子视图(超出项目组持续显示,例如在scrollview中。。。)。默认值为NO。

 

 

http://blog.csdn.net/newjerryj/article/details/7622044

你可能感兴趣的:(UIView常用方法)