GeekBand.iOS-View的层次结构与属性

2016/4/11 posted in  iOS学习笔记  

UIView是UIkit中非常重要的一个基本类型,几乎所有的View都是继承于UIView的今天我们对UIView相关知识进行简单地汇总。

什么是UIView

UIView表示屏幕上一块矩形区域:负责提供相应区域的显示内容,也处理相应区域的事件相应。

屏幕对象UIScreen

UIScreen类代表了屏幕,根据个人理解,UIScreen一般也只是用来获取屏幕大小。如下例所示:

CGrect screenBounds = [[UIScreen mainScreen] bounds];//返回的是带有状态栏的Rect (0.0,0.0,320.0,480.0)

iOS8+

//可变坐标系
.coordinateSpace
//固定坐标系
.fixedCoordinateSpace

截图

-(UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

UIWindow

UIWindow代表当前应用可用的屏幕区域,由UIApplication或appDelegate创建,保存到appdelegate.window里。使用-makeVisibleAndKey显示。

UIView

UIView的树状层次

前面的文章已经描述过了。View的定位

UIView的层次管理方法 Create Read Update Delete

  • 增加(Create)

    -(void)addSubView:(UIView *)view
    -(void)insertSubView:(UIView *)view atIndex:(NSInteger) index
    -(void)insertSubView:(UIView *)view belowSubView:(UIView *)siblingSubview
    -(void)insertSubView:(UIView *)view aboveSubView:(UIView *)siblingSubview
    
  • 删除(delete)

    //子View调用
    -(void)removeFromSuperview
    
  • 修改(update)

    -(void)bringSubViewToFront:(UIView *)view
    -(void)sendSubviewToBack:(UIView *)view
    -(void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2
    
  • 查找(Read)

    view.window;
    view.superview;
    view.subviews;
    
    -(BOOL)isDescendantOfView:(UIView *)view
    

UIView的重要属性

  • 定位
    • frame/bounds/center/transform
    • resizeToFit
  • 视觉
    • backgroundColor
    • alpha vs. opaque
    • maskView(iOS8+)
  • 访问 .tag => -viewWithTag