一、Frame
Frame是UIView在其父視圖坐標(biāo)系中的位置和大小。它是一個(gè)CGRect類型的結(jié)構(gòu)體,包含了視圖的原點(diǎn)坐標(biāo)和寬高信息。當(dāng)我們改變一個(gè)視圖的frame時(shí),實(shí)際上是在修改它在父視圖中的位置和大小,因此會影響到它的位置和顯示。Frame的原點(diǎn)是相對于父視圖的坐標(biāo)系的,因此當(dāng)父視圖發(fā)生移動或變換時(shí),子視圖的frame也會相應(yīng)地發(fā)生改變。二、Bounds
Bounds是UIView在其自身坐標(biāo)系中的位置和大小。它也是一個(gè)CGRect類型的結(jié)構(gòu)體,通常情況下,它的原點(diǎn)都是(0, 0)。當(dāng)我們改變一個(gè)視圖的bounds時(shí),實(shí)際上是在修改它自身坐標(biāo)系的大小,而不會影響到視圖在父視圖中的位置和顯示。Bounds的寬高是相對于視圖自身的,因此當(dāng)視圖發(fā)生縮放時(shí),它的子視圖的bounds不會發(fā)生改變。三、區(qū)別總結(jié)
Frame用于描述視圖在其父視圖坐標(biāo)系中的位置和大小,可以改變視圖的位置和大小,其原點(diǎn)是相對于父視圖的坐標(biāo)系的。Bounds用于描述視圖在其自身坐標(biāo)系中的位置和大小,用于改變視圖的坐標(biāo)系大小,其原點(diǎn)通常為(0, 0)。延伸閱讀
坐標(biāo)系轉(zhuǎn)換
在iOS開發(fā)中,由于UIView的Frame和Bounds屬性描述了視圖在不同坐標(biāo)系中的位置和大小,所以涉及到坐標(biāo)系轉(zhuǎn)換是很常見的。
UIView提供了多種方法用于坐標(biāo)系轉(zhuǎn)換,如convertPoint:toView:
和convertPoint:fromView:
用于點(diǎn)的轉(zhuǎn)換,convertRect:toView:
和convertRect:fromView:
用于矩形區(qū)域的轉(zhuǎn)換等。
坐標(biāo)系轉(zhuǎn)換在處理視圖嵌套、觸摸事件處理等場景中非常有用,可以幫助我們準(zhǔn)確地獲取和設(shè)置視圖在不同坐標(biāo)系中的位置和大小。