iOS–UIView(1)
最近看了官方文档中关于UIView的内容,记录一下所学的内容。关于UIView的内容来自iOS 9.0 Documentation—UIKitReference—UIView Class Reference。
UIView
UIView继承自UIResponder:NSObject,遵循的协议有UIDynamicItem, UIAppearanceContainer, UIAppearance, UICoordinateSpace, NSObject, NSCoding, UITraitEnvironment。
UIView类在屏幕中定义了一块矩形区域及其中的界面,并管理负责界面的内容。View对象作为App与用户的主要交互途径,其有着许多的职责。
- 界面绘制及动画
- view通过例如UIKit,Core Graphics和OpenGL ES等技术在矩形区域中绘制界面内容。
- 某些view的properties可以动画的改变。
- 布局及subview的管理
- 一个view包含着0至多个subview
- 每个view都定义了自己默认的相对于superview的大小改变方式
- 如果需要可以一个view可以定义其subview的大小和位置
- 事件处理
- view是一个响应者并可以处理touch event以及其他所有UIResponder类事件。
- view可以通过addGestureRecongnizer:方法来添加常见的手势处理
frame, bounds, center
一个view的外形由frame,bounds和center这三个属性共同定义。
frame在view的 superview的坐标系
中定义了自己的原点和大小。frame通常运用于调整view的大小和位置。
可见frame实际上是一个CGRect结构体,CGRect又是由CGPoint和CGSize这两个结构体组成,两者分别定义了原点的坐标和大小的宽高。frame中的size和bounds中的是同一个CGSize,frame中的point和center中的也是同样的CGPoint,改变frame中对应的属性也会改变bounds或center中相应的属性。
与frame不同的是bounds描述的是 view自身坐标系
中view的坐标和大小。bounds通常仅运用在自定义绘图代码中。一般情况下bounds中的原点为(0, 0),即以自身矩形左上角的点为坐标原点,也可以通过改变原点的坐标来显示view的不同部分。
center在view的 superview的坐标系
中定义了自己的中心点,通过改变center属性可在不改变view的大小情况下改变view的位置。
添加subview的相关方法
最为常用的就是addSubview:方法,在view中添加一个子view
还可以使用insertSubview:aboveSubview:和insertSubview:belowSubview:以及exchangeSubviewAtIndex:withSubviewAtIndex:方法来控制subview的层级关系。前两个方法看方法名就知道用法。而第三个方法中
每个index代表着subview在其view的数组中相应的位置,index从0开始并且不大于subview的个数。这个方法只能操作在同一subview层级下的view。
线程相关
只能在主线程中对view对象进行操作。