OC_UIView

297 阅读4分钟

UIView简介

UIView是一个对屏幕上一个矩形区域内容进行管理的对象。

视图是应用程序用户界面的基本构建块,UIView类定义了所有视图常见的行为。 视图对象在其边界矩形内呈现内容,并处理与该内容的任何交互。

UIView类是一个基础的类,您可以实例化并使用它来显示固定的背景色。您还可以自定义子类以绘制更复杂的内容,以显示在应用程序中常见的标签、图像、按钮和其他接口元素。

视图可以嵌套在其他视图中以创建视图层次结构,这为组织相关内容提供了方便的方式。superview 可以包含任意数量的 subview ,但每个 subview 只有一个 superview 。默认情况下,当子视图的可见区域扩展到其超视界之外时,不会出现子视图内容的剪辑。使用 clipsToBounds 属性来更改该行为。

创建一个UIView

创建 UIView 视图时通常会指定其初始的大小与位置,例如:

CGRect  viewRect = CGRectMake(10, 10, 100, 100);
UIView* myView = [[UIView alloc] initWithFrame:viewRect];

首先 CGRect 是一个结构体,里面包含了 CGPoint 类型的 origin ,即原点属性和 CGSize 类型的 size 即尺寸属性。这两个属性同样都是结构体,分别包含了原点的 xy 位置和尺寸的 widthheight 属性,根据这几个属性可以定位一个视图的位置和大小属性。

UIView的常用属性

可动画属性

以下的几个属性属于可动画属性,可以用来创建一个从旧值到新值的动画。

属性 类型 解释
frame CGRect 视图在superview 坐标系中的视图的原点和尺寸
bounds CGRect 视图的内部尺寸
center CGPoint 视图的中心点
transform CGAffineTransform 视图的各种变化
alpha CGFloat 视图的透明度
backgroundColor UIColor 视图的背景色

视觉外观属性

属性 类型 解释
alpha CGFloat 视图的透明度
backgroundColor UIColor 视图的背景色
hidden BOOL 是否隐藏
opaque BOOL 是否透明
clipsToBounds BOOL 子视图能否超出其边界
layer CALayer 核心动画层

事件相关属性

属性 类型 解释
userInteractionEnabled BOOL 是否接收用户事件

边界框架属性

属性 类型 解释
frame CGRect 视图在superview 坐标系中的视图的原点和尺寸
bounds CGRect 视图的内部尺寸
center CGPoint 视图的中心点
transform CGAffineTransform 视图的各种变化

视图层次属性

属性 类型 解释
superview UIView 父视图
subview UIView 子视图

其他属性

属性 类型 解释
tag NSInteger 用来识别程序中的视图对象

UIView的常用方法

视图层次管理方法

  • 添加子视图

      - (void)addSubview:(UIView *)view;
    
  • 将子视图移到最上层

      - (void)bringSubviewToFront:(UIView *)view;
    
  • 将子视图移到最下层

      - (void)sendSubviewToBack:(UIView *)view;
    
  • 将自身从父视图删除

      - (void)removeFromSuperview;
    
  • 在指定索引插入子视图

      - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
    
  • 在一个子视图上插入另一个子视图

      - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;
    
  • 在一个子视图下插入另一个子视图

      - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
    
  • 将两个子视图交换位置

      - (void)exchangeSubviewAtIndex:(NSInteger)index1  withSubviewAtIndex:(NSInteger)index2;
    

标识视图方法

  • 通过子视图的 tag 获取子视图

      - (__kindof UIView *)viewWithTag:(NSInteger)tag;
    

使用Block执行动画

  • 使用指定的持续时间、延迟、选项和完成处理程序动画对一个或多个视图的更改

      + (void) animateWithDuration:(NSTimeInterval) duration animations:(void (^)(void))animations completion:(void(^)) (BOOL finished) completion
    

UIView的Layer属性

UIViewLayer 属性是 CALayer 类型。 CALayer 是一个管理基于图像的内容的对象,并允许您在该内容上执行动画。

实际上, UIView 的其他属性一般用来负责处理事务,而 layer 用于显示.

CALayer的一些常用属性

设置阴影

属性 类型 解释
shadowOpacit CGFloat 阴影透明度
shadowColor CGColor 阴影的颜色
shadowOffset CGSize 阴影的方向和距离
shadowRadius CGFloat 阴影的模糊度
shadowPath CGPathRef 阴影的形状

设置圆角和边框

属性 类型 解释
cornerRadius CGFloat 圆角的半径
borderWidth CGFloat 边框的宽度
borderColor CGColor 边框的颜色