iOS UIView的frame、bounds和center

首先,frame和bounds都是CGRect类型,CGRect包含一个origin和一个size,origin是CGPoint类型,size是CGSize类型。

那好。frame的origin表示该view的左上角顶点在其superView的坐标系下的坐标,size表示该view的长宽;bounds的origin表示该view的左上角顶点在该view自身坐标系下的坐标,size表示view的长宽;center表示view的中心点在其superView的坐标系下的坐标。

frame和bounds的size表示的是同一个东西,即view的长宽。改变frame的size会影响到bounds的size,反之亦然。

frame的origin定义了view的左上顶点在其superView中的位置,bounds的origin定义了view的左上顶点在其自身坐标系中的位置(我们可以根据这个坐标反推出其自身坐标系的原点位置,该view的subView都要参考这一位置,就像该view参考的坐标系是其superView的bounds所确定的坐标系)。

center也定义了view在其superView中的位置,再加上bounds的size值就可以推出frame的值。因此,改变center和bounds的size会改变frame值,改变frame值会改变center和bounds的size值。当view应用了transform比如旋转时,frame与center和bounds的size值的关系不再存在,因为应用transform后,bounds和center代表的含义和值都没改变,但是frame代表的含义变成了包含旋转后图形的最小矩形。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容