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 即尺寸属性。这两个属性同样都是结构体,分别包含了原点的 x 、y 位置和尺寸的 width 、 height 属性,根据这几个属性可以定位一个视图的位置和大小属性。
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属性
UIView 的 Layer 属性是 CALayer 类型。 CALayer 是一个管理基于图像的内容的对象,并允许您在该内容上执行动画。
实际上, UIView 的其他属性一般用来负责处理事务,而 layer 用于显示.
CALayer的一些常用属性
设置阴影
| 属性 | 类型 | 解释 |
|---|---|---|
| shadowOpacit | CGFloat | 阴影透明度 |
| shadowColor | CGColor | 阴影的颜色 |
| shadowOffset | CGSize | 阴影的方向和距离 |
| shadowRadius | CGFloat | 阴影的模糊度 |
| shadowPath | CGPathRef | 阴影的形状 |
设置圆角和边框
| 属性 | 类型 | 解释 |
|---|---|---|
| cornerRadius | CGFloat | 圆角的半径 |
| borderWidth | CGFloat | 边框的宽度 |
| borderColor | CGColor | 边框的颜色 |