【iOS_Development】frame VS bounds

1. frame

frame表示的是該view在父坐標(biāo)系統(tǒng)中的位置和大?。▍⒄崭缸鴺?biāo)系統(tǒng)),frame的(frame.origin.x, frame.origin.y)是相對于父坐標(biāo)系的偏移量

- (CGRect)frame {
    return CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
}

2. bounds

bounds表示的是該view在本地坐標(biāo)系統(tǒng)中的位置和大小(參照本地坐標(biāo)系統(tǒng),就相當(dāng)于View自己的坐標(biāo)系統(tǒng),以(0, 0)點(diǎn)為起點(diǎn))

- (CGRect)bounds {
    return CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
}
  • bounds特點(diǎn):可以通過修改自己坐標(biāo)系的原點(diǎn)位置,進(jìn)而影響到“子view”的顯示位置;可以改變的frame,如果bounds>frame,那么frame也會跟著變大

注意

在實(shí)際使用中可以通過.bounds或者setBounds可以自定義視圖的bounds,當(dāng)然在自定義之后,其內(nèi)部的子控件位置也會發(fā)生相關(guān)變化,具體變化的規(guī)律我做了一下簡單的總結(jié),下面就通過一個(gè)偽代碼的式子來描述一下(獲取子控件位置的y同理)

/** 獲取子控件最終frame.origin.x(相對于根視圖)
 *  superView.bounds.origin.x:父view自定義bounds的x
 *  superView.frame.size.width:父view原本的width
 *  superView.bounds.size.width:父view自定義bounds的width
 *  superView.frame.origin.x:父view原本的x
 ***********************  華麗的分割線  ***********************
 *  subView.bounds.origin.x:子view自定義bounds的x
 *  subView.frame.size.width:子view原本的width
 *  subView.bounds.size.width:子view自定義bounds的width
 *  subView.frame.origin.x:子view原本的x
 */
lastX = (-(superView.bounds.origin.x) + (superView.frame.size.width - superView.bounds.size.width) / 2.0 + superView.frame.origin.x) + (- subView.bounds.origin.x + (subView.frame.size.width - subView.bounds.size.width) / 2.0 + subView.frame.origin.x))

3. Demo

有興趣的話大家可以親測一下

UIView *v1 = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 350, 350)];
v1.backgroundColor = [UIColor redColor];
v1.bounds = CGRectMake(20, 20, 250, 250);
[self.view addSubview:v1];
NSLog(@"%lf~~~~%lf~~~~%lf~~~~%lf", v1.frame.origin.x, v1.frame.origin.y, v1.frame.size.width, v1.frame.size.height);
    
UIView *v2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
v2.backgroundColor = [UIColor orangeColor];
[v1 addSubview:v2];
NSLog(@"%lf~~~~%lf", v2.frame.origin.x, v2.frame.origin.y);


GitHub主頁

CSDN Blog

Email:jinjob@icloud.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容