UIView经常使用方法汇总

在现实编程中,咱们常常碰到各类的UI问题,今天我带你们一块儿学习,如何操做UIView的各类方法,好了直接上代码。编程

1.addSubViewide

- (void)viewDidLoad {
    [super viewDidLoad];


   // 1.addSubView
    
    UIView*testView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    
    testView.backgroundColor = [UIColor redColor];
    
    [self.view addSubview:testView];
    
/*详解**  addSubview:
      添加一个子视图到接收者并让它在最上面显示出来。
       - (void)addSubview:(UIView *)view 讨论 这方法一样设置了接收者为下一个视图响应对象。接收者保留视图。
       若是你使用 removeFromSuperview方法用来把视图移除他的显示列表,那么视图将会被释放。
       若是你想 要在视图移除显示列表後保留并使用这个视图(若是,举个例子,你想要交换一些视图的位 置。),
       你不准保留那个视图在他调用removeFromSuperview前。
*/
    
    
    
    
    
    


}

图片描述

2.bringSubviewToFront学习

//2.bringSubviewToFront
    UIView *bringView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];
    bringView .backgroundColor = [UIColor grayColor];
    [self.view addSubview:bringView];
    [self.view bringSubviewToFront:testView];
    
    /**详解 bringSubviewToFront
     把指定的子视图移动到顶层 
     - (void)bringSubviewToFront:(UIView *)view 参数 view 须要移到顶 层的视图
    
    */

图片描述

3.convertPoint:fromView:测试

//3.convertPoint:fromView:
  
    CGPoint viewPoint = [self.view convertPoint:testView.frame.origin fromView:testView];
    
    /**详解  
     把一个点从一个坐标系转换到接收者的坐标系 - (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view 参数 point 一个视图中坐标系上的点 view 一个视图包含了点和他自 身坐标系。若是是图是nil,那么这个方法将尝试转换基于窗口的坐标系。不然视图和那个接收 者必须属于同一个UIWindow对象。 返回值 一个转换到接收者坐标系的点
     */

4.convertPoint:toView:spa

//4.convertPoint:toView:
    
    CGPoint viewPoint2 = [self.view convertPoint:testView.frame.origin toView:bringView];
   /**详解 转换一个点从接收者坐标系到给定的视图坐标系 - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 参数 point 一个在调用者坐标系中的点 view 一个包含了须要被转换的点 的视图。若是视图是nil,那么这个方法将会转换成基于窗口的坐标。不然视图和接收者都要属 于同一个UIWindow对象。 返回值 基于视图的坐标系转换过的点
    */

5.convertRect:fromView:code

//5.convertRect:fromView:
    
    CGRect rc = [self.view convertRect:cell.btn.frame fromView:cell];
    
    /**详解
     转换一个矩形从其余视图坐标系到接收者坐标系。 - (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view 参数 rect 一个在视图坐标系中的矩形 view 一个视图内部有矩形在他 的坐标系中。若是视图是nil,那么这个方法将会基于窗口来转换。不然视图和接收者必须都属 于同一个UIWindow对象 返回值 The converted rectangle 转换过的矩形
     */

6.converRect:toView:对象

//6.convertRect:toView:
    CGRect rc = [cell convertRect:cell.btn.frame toView:self.view];
    /**详解
     转换接收者坐标系中的矩形到其余视图 - (CGRect)convertRect:(CGRect)rect toView:(UIView *)view 参数 rect 一个在接收者坐标系中的矩形 view 要转换过去的目标视图对象。若是这个是 视图是nil,这个方法将会基于窗口坐标系来转换。否者视图和接收者必须属于同一个 UIwindow对象 返回值 一个转换过的矩形
     */

7.didAddSubview:索引

-(void)didAddSubview:(UIView *)subview
{
    
    
    
    /**详解
     告诉视图当子视图已经添加 - (void)didAddSubview:(UIView *)subview 参数 subview 被添加作 子视图的视图对象 讨论 被子类重写用来执行额外的命令当子视图添加到接收者。这个方法被
     addSubview调用
     */

    NSLog(@"didAddSubview");
    
    
}
  1. didMoveToSuperview事件

-(void)didMoveToSuperview
{
   
    /*详解
     didMoveToSuperview
     通知接收者父视图已经改变(nil是容许的) - (void)didMoveToSuperview 讨论 默认不作任何 事情;子类能够重写这方法来做为特定的实现
     */
    
    NSLog(@"didMoveToSuperview");
}
9. didMoveToWindow
-(void)didMoveToWindow
{
    /*详解
     didMoveToWindow
     通知接收者它一斤给添加到窗口中 - (void)didMoveToWindow 讨论 默认实现不作任何事情; 子类能够重写这个方法来作特殊的实现 窗口的属性有多是nil当这个方法调用的时候,这代表 接收者并不属于固然任何一个窗口。这个只发生在接收者从它的父视图上移除或者接收者添加 到父视图中而不是添加到window中。重写这个方法能够用来选择忽略一些他们不关心的对象
     */
    NSLog(@"didMoveToWindow");
}
10. drawRect
- (void)drawRect:(CGRect)rect {
    /*详解
     在接收者视图中绘制矩形 - (void)drawRect:(CGRect)rect 参数 rect 一个定义的须要绘制的矩形 讨论 子类重写这个方法若是他们确实要绘制他们自定义的视图。若是子类是其余视图的容器那 么它不须要重写这个方法。默认的实现不作任何事情。若是你自定义的视图是一个UIView子 类,你不须要去调用它的父类实现。注意若是它的父类实现绘制而且不透明属性为YES那么每 一个子类都须要填充矩形。 当这个方法被调用,接收者能够假定他的帧在坐标上已经转换,边 界矩形已经应用;全部他要作的就是绘制自定义的方法。使用UIGraphicsGetCurrentContext 方法去获取当前图形内容用来绘制,坐标原点在左上角。不要保留图片内容当他能够被 drawRect:这个方法调用。
     
     
    */ }

11.exchangeSubviewAtIndex:withSubviewAtIndex:图片

//    11.exchangeSubviewAtIndex
    /**详解
     exchangeSubviewAtIndex:withSubviewAtIndex:
    交换接收者的子视图和给定的索引视图 - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 参数 index1 一个须要取代索引2的子视图 index2 一个 须要取代索引1的子视图
     */

12.hitTest:withEvent:

返回接收者视图层次中最远的派生(包括它自己)的特定的点。 - (UIView )hitTest: (CGPoint)point withEvent:(UIEvent )event 参数 point 接收者坐标系中的点 event 触发这个方法 的事件或者是若是这个方法被预调用就返回nil 返回值 一个视图对象最远的派生点。若是这个 点位于接收者以外就返回nil 讨论 这个方法贯穿视图的层次发送pointInside:withEvent: 消息到 每个子视图用来决定那个子视图须要接收触摸事件。若是pointInside:withEvent: 返回YES, 那么视图的层次所有贯穿;不然视图层次的分支是被否认的。你不太须要调用这个方法,可是 你须要重写它用来隐藏子视图的触摸事件。 若是视图是隐藏的,禁止用户交互的或者透明值小 于01那么这个方法不可用
13.insertSubview:belowSubview:
//    
    
    /*
    插入视图到显示链的底层 - (void)insertSubview:(UIView )view belowSubview:(UIView )siblingSubview 参数 view 一个须要插入到其余视图底部的视图。它将从它的父视图移除若是 它不与相邻视图的相邻 siblingSubview 一个相邻视图将会在插入的视图之上
    insertSubview:aboveSubview: 在视图层次顶层插入一个视图 - (void)insertSubview:(UIView )view aboveSubview:(UIView )siblingSubview 参数 view 一个插入被用来放在顶层的视图。它 将会从父视图中移除若是它不是相邻视图 siblingSubview 一个相邻视图用来放在插入视图的後 面
insertSubview:atIndex: 插入视图到指定的索引 - (void)insertSubview:(UIView *)view atIndex: (NSInteger)index 参数 view 插入的视图,这个值不能是nil index 子视图索引从0开始而且不能 大于子视图的数量
     */
    
    [self.view insertSubview:testView belowSubview:bringView];
    [self.view insertSubview:bringView aboveSubview:testView];
    [self.view insertSubview:testView atIndex:0];

// 14.isDescendantOfView:

BOOL isSub = [self.view isDescendantOfView:testView];
    
   // 14.isDescendantOfView:
   /* 返回一个布尔值指出接收者是不是给定视图的子视图或者指向那个视图 - (BOOL)isDescendantOfView:(UIView *)view 参数 view 一个视图用来测试子视图在视图层次中 的关系 返回值 若是接收者是视图的子视图就返回YES,或者视图就是接收者;不然就是NO
    */

15.layoutIfNeeded

//    15.layoutIfNeeded
    
   /* 排列子视图若是须要的话 - (void)layoutIfNeeded 讨论 使用这个方法来关注子视图的排列在绘 制前*/
    
    [self.view layoutIfNeeded];

16.layoutSubViews

-(void)layoutSubviews
{
   /* layoutSubviews
    排列子视图 - (void)layoutSubviews 讨论 当layoutIfNeeded被调用是子类用来重写这个方法来 排列子视图。默认实现这个方法不作任何事情。*/
    NSLog(@"layoutSubviews");

}

17.pointInside:withEvent:

pointInside:withEvent:
返回一个布尔值指出接收者是否包含特定的点 - (BOOL)pointInside:(CGPoint)point withEvent: (UIEvent *)event 参数 point 一个在接收者坐标系内的点 event 这个方法的目标事件或者若是这 个方法被预调用返回nil 返回值 若是点在接收者边界内返回YES,不然返回NO
  1. removeFromSuperview
    removeFromSuperview

把接收者从它的父视图或者窗口移除,并在响应链中移除。 - (void)removeFromSuperview 讨 论 接收者同时释放;若是你计划重用它,要肯定在发送消息前保持它并在添加到其余UIView 对象做为子视图後移除。 不要在显示的时候调用

  1. sendSubviewToBack
    //sendSubviewToBack:

/ 移动指定的子视图到它相邻视图的後面 - (void)sendSubviewToBack:(UIView )view 参数 view 一个子视图用来移动到它後面去*/

  1. setNeedsDisplay

//  setNeedsDisplay
  /*  控制接收者的边界矩形被标记为须要显示 -(void)setNeedsDisplay 讨论 默认状况下,视图几何 图形的改变自动重绘而不须要调用drawRect:方法。所以,你须要去请求视图重绘当视图的数 据或者状态改变的时候。从这个意义上来讲,向视图发送setNeedsDisplay消息。任何UIView 对象标记为须要显示後将会在应用程序循环中自动从新绘制。
   */
    
    [self.view setNeedsDisplay];
  1. setNeedsDisplayInRect

//setNeedsDisplayInRect:
   /* 标记接收者中的特定的矩形区域为须要显示,或者添加接收者现有的其余无效区域 - (void)setNeedsDisplayInRect:(CGRect)invalidRect 参数 invalidRect 标记接收者的矩形区域为 无效的;他须要在接收者坐标系中定义。 讨论 默认状况下,视图几何图形的改变自动重绘而 不须要调用drawRect:方法。所以,你须要去请求视图重绘当视图的数据或者状态改变的时 候。使用这个方法或者用setNeedsDisplay方法来标记视图须要显示的地方。*/
    
    [self.view setNeedsDisplayInRect:CGRectMake(10, 10, 10, 10)];
  1. setNeedsLayout

// setNeedsLayout
    /*设置当子视图显示的时候须要从新排列 - (void)setNeedsLayout 讨论 若是你调用这个方法在下 一个显示方法之间,那么layoutIfNeeded排列子视图;不然将不会作任何事情*/
    
    [self.view setNeedsLayout];
  1. sizeThatFits

//sizeThatFits:
    /*计算并返回一个最好的适应接收者子视图的大小 - (CGSize)sizeThatFits:(CGSize)size 参数 size 接收者首选的尺寸 返回值 一个新的大小用来适应接收者子视图 讨论 默认的实现返回大小 参数 子类重写这个方法用来返回特定视图的大小。举个粒子,UISwitch返回一个修正过的大 小,UIImageView返回图片的大小 这个方法并无改变接收者的大小*/
    CGSize size = [self.view sizeThatFits:CGSizeMake(100, 100)];
  1. sizeToFit

//sizeToFit
   /* 调整大小并移动接收者视图大小因此他包含了他的子视图 - (void)sizeToFit 讨论 这个方法使用 sizeThatFits: 方法来决定大小。子类须要重写sizeThatFits:用来计算正确的尺寸大小。默认的 实现不作任何事情。*/
    [self.view sizeToFit];
相关文章
相关标签/搜索