- (void)addSubview:(UIView *)aView; - (void)removeFromSuperview;
须要注意的是,经过父 View 添加子 View,而移除要经过子 View 它本身。segmentfault
@property CGFloat contentScaleFactor;
,它会返回一个点有多少个像素。@property CGRect bounds; // 你的视图内部的绘图区域的原点和大小。 bounds 属性用在你 view 本身的实现方法里。 It is up to your implementation至于怎样解释 bounds.origin 的含义,这取决于你的实现方法 @property CGPoint center; // 你的视图在父视图坐标空间里的中心点 @property CGRect frame; // 父视图坐标空间的整个外边框 // contains your view’s bounds.size
好比上面这张图,它的 bounds
也就是左上角的 (200,250) 那个点。对于 View B 来讲并不知道本身被旋转了,而是其余某些东西旋转了它。再看下 View B 的 frame
,在 View A 的坐标系统里它比 View B 大了好多。由于它要完整的装下 View B,包括 B 的旋转状态。因此 View B 的 bounds
只有 200 * 250,可是 View B 的 frame
大多了,是 320 * 320。它的中心点是 (300,225),若是你不当心在 View B 的内部用了这个 center
,你甚至都无法画出它的 bounds
了,由于已经在屏幕外面了。bounds
不会显示,由于 View B 只有 200 * 250,但中心点远在 (300,225)。数组
View B 它本身的中心点是 :spa
(bound.size.width/2 + bounds.origin.x, bounds.size.height/2 + bounds.origin.y)
这个例子中它是 (100,125)。code
一般作法是从 View Library 中拖出一个通用 UIView,而后使用 Inspector 改变 UIView 为你自定义的类。事件
(经过代码建立 UIView)只要使用 alloc
和 initWithFrame:
(UIView 的指定初始化)就行。rem