首先,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的左上頂點在其自身坐標系中的位置(我們可以根據(jù)這個坐標反推出其自身坐標系的原點位置,該view的subView都要參考這一位置,就像該view參考的坐標系是其superView的bounds所確定的坐標系)。
center也定義了view在其superView中的位置,再加上bounds的size值就可以推出frame的值。因此,改變center和bounds的size會改變frame值,改變frame值會改變center和bounds的size值。當view應用了transform比如旋轉(zhuǎn)時,frame與center和bounds的size值的關系不再存在,因為應用transform后,bounds和center代表的含義和值都沒改變,但是frame代表的含義變成了包含旋轉(zhuǎn)后圖形的最小矩形。