关于 frame、bounds 和 center
引言:
每个视图有两个属性:frame
和bounds
。这两个属性都是一个简单的数据结构,叫做CGRect
,其中定义了一个原点(x,y), 以及一个尺寸(宽度, 高度)。虽然相似, 实际上视图的frame和bounds有不同的定义和用途。
通过以下属性可以修改控件的位置: frame.origin
, center
;
通过以下属性可以修改控件的尺寸: frame.size
, bounds.size
# 一. frame
视图的frame
定义了一个矩形的宽和高, 以及一个原点, 原点的值是该视图的原点在父视图中的位置。
self.floatView.frame = CGRectMake(0, 0, 100, 100);
# 二. bounds
视图的bounds
也定义了宽和高, 但是原点是相对于当前视图的值,并且通常是(0, 0)。
# 三. center
center
为视图的中心点, 是基于 frame 的 origin
和 size
决定的。
center 是一个结构体,包含x和y。
center.x = frame.origin.x + frame.size.width/2;
center.y = frame.origin.y + frame.size.height/2;
# 四. 总结
frame 修改, 会影响到 center 和 bounds
center 修改, 会影响 frame, bounds 不发生变化
bounds 修改, 会影响到 frame 和 center