bounds和frame的區(qū)別

frame:以父控件左上角為原點
bounds:以自己的左上角為原點,bounds x,y永遠為0(這是錯誤的認識)

frame和bounds都是用來描述一塊區(qū)域
frame:描述可視范圍,也就是說從左上角的0,0點開始延伸,它延伸的區(qū)域就是我們的可視范圍

bounds:描述可視范圍在內(nèi)容的區(qū)域,所有的子控件都有內(nèi)容,它就類似于空氣,是看不到的,正常情
                況下,內(nèi)容是無限大的,所有的子控件其實都是放在內(nèi)容上的,在可視范圍內(nèi)的內(nèi)容我們才能
                看見,所以正常情況下,內(nèi)容的左上角(bounds)與可視范圍(frame)的左上角是重合的,當修
                改bounds的x與y都會導致子控件跟著移動.需要注意的是,可視范圍(frame)是永遠不會變的,它是相對父控件的.

所有的子控件都是相對于內(nèi)容
bounds:修改內(nèi)容原點

相對性:可視范圍相對于父控件位置永遠不變
          可視范圍相對于內(nèi)容,位置改變

如下圖舉例:


bounds.png

默認情況下,可視范圍(frame)的原點與內(nèi)容(bounds)的原點是重合的.所以加在內(nèi)容左上角的開關(guān)能看到,因為也在可視范圍內(nèi),當此時修改內(nèi)容的原點,也就是bounds的y值,如y += 10,由于可視范圍是不變的,這時內(nèi)容的原點就會變化,y += 10,那么內(nèi)容原點就會往上移10,此時內(nèi)容上的控件(本例中指開關(guān))也會跟著
內(nèi)容原點一起上移.

總結(jié):contentOffset(偏移量)的值和bounds的origin值是一樣的,偏移量往可視范圍外偏移是正數(shù),往可視范圍里面偏移是負數(shù),可視范圍指的是控件的frame

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容