视图的 frame, bounds, center 属性的关系

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成员的异同
bounds指定坐标系,frame进行定位
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容