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 | 边框的颜色 |