UI控件都继承自 UIView 类型,都继承了以下3个属性:
- frame:origin,size
- bounds:origin,size
- center:point
上面这三者之间的联系个人觉得在配置视图的位置,大小信息时: frame = center + bounds (产生的作用上等同)
- frame 的基本作用:定位视图在父视图中的位置,和设置视图的大小
- center 的基本作用:定位视图在父视图中的位置,和 frame 属性的定位区别在于基准点的选择不同。
frame 属性和 center 属性在定位作用上的异同
- bounds 基本作用:设置视图的大小,前两个参数并不是用于定位,而是用来指定本地坐标系。
01. // frame 和 bounds 属性都是CGRect类型的,难免认为功能相似
02. - (CGRect)frame{
03. return CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width,self.frame.origin.height);
04. }
05.
06. - (CGRect)bounds{
07. return CGRectMake(0,0,self.bounds.size.width,self.bounds.size.height);
08. }
09. // bounds属性高于frame属性,任何视图都一定存在bounds属性,但不是所有视图都存在frame属性的,某种程度上frame属性的存在依存于bounds属性。 bounds --> 指定坐标系 --> frame来参照指定的坐标系
frame 属性和 bounds 属性有关origin成员的异同