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的上面,最先显示。

 

IMGView *imgView = [[IMGView alloc] initWithFrame:CGRectMake(10, 0, 300, 300)];
[self.view addSubview:imgView];
[imgView release];
 

 

   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.

 

– 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值