概述:
UIView继承与UIResponder, 作为所有视图类的基类, 具有三个基本功能:图画和动画, 管理内容的布局, 控制事件交互.担当MVC中视图层的作用.同时作为一个高度可配置类类, 通常会通过子类化以实现更为丰富的功能或者界面现实.
1. 图画功能
1.1.1 可视化界面的自定义
常用的界面属性
backgroundColor | 背景颜色 |
hidden
alpha
opaque
|
显示 或者隐藏
透明度 (当透明度为0 或者 视图为隐藏状态时, 视图将失去交互功能)
视图的是否是不透明的, (图形绘制时, 提升性能)
|
layer
layerClass
| 可用于动画 |
frame
bounds
center
transform
| 位置信息 |
1.1.2 重绘功能
- (void)drawRect:(CGRect)rect
- setNeedsDisplay
|
2. 动画
3. 管理内容的布局
子视图管理:
subview 获取本视图的所有子视图 存于数组中
· 描述视图是否显示@property(nonatomic, readonly) UIWindow *window (read-only) This property is nil if the view has not yet been added to a window · - (void) bringSubviewToFront 将视图移动到最上层 · - (vid) sendSubviewToBack 将视图移动到最下层 · - (void)removeFromSuperview If the view’s superview is not nil, the superview releases the view. · - insertSubview:atIndex: 在父视图的某个位置插入子视图 从下标0 开始 · - insertSubview:aboveSubview: 将某个视图 插入到某个视图上方 · - insertSubview:belowSubView: 将视图插入到某个视图下方 · - xechangeSubviewAtIndex: withSubviewAtIndex: 使用下标交换两个视图的位置 · 属性 (BOOL) 判断当前视图对象是否时给定视图的子类 isDescendantOfView:(UIView *) |
重新布局(适用于屏幕旋转)
通过重写- layoutSubviews 方法实现重新布局 其原理是在如下情况下 此方法会被触发调用:
触发机制
1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews 3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化 4、滚动一个UIScrollView会触发layoutSubviews 5、旋转Screen会触发父UIView上的layoutSubviews事件 6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件
当然也可以通过方法()主动调用重新布局方法
|