首先,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代表的含义变成了包含旋转后图形的最小矩形。