iOS開發 View中frame和bounds區別

2022-02-04 22:08:40 字數 2353 閱讀 7133

開發中調整view的時候的經常會遇到frame和bounds,剛開始看的時候不是很清楚,不過看了一下官方文件,frame是確定檢視在父檢視中的位置,和本身的大小,bounds確定可以確定子檢視在當前檢視中的位置,還可以改變view的大小,如果bounds確定大小,那麼view的檢視優先選擇的bounds中的寬高。center的位置是相對于父座標系中的定位。蘋果官方給了一張供參考:

如果還不是很清晰,可以參考一下frame和bounds的中**:

-(cgrect)frame

-(cgrect)bounds

當然為了更好的理解以上的概念,寫個小demo實戰了一下,viewdidload將新增在view中,然後在上新增乙個view:

[self.view addsubview:girlimageview];//新增到父檢視中

nslog(@"girlimageview frame:%@------girlimageview bounds:%@",nsstringfromcgrect(girlimageview.frame),nsstringfromcgrect(girlimageview.bounds));

uiview *childview = [[uiview alloc] initwithframe:cgrectmake(0, 0, 100, 100)];

childview.backgroundcolor = [uicolor yellowcolor];

[girlimageview addsubview:childview];

nslog(@"childview frame:%@-------childview bounds:%@",nsstringfromcgrect(childview.frame),nsstringfromcgrect(childview.bounds));

具體效果如下:

輸出結果:

2015-04-03 11:50:00.326 mycontraint[1929:98282] girlimageview frame:, }------girlimageview bounds:, }

2015-04-03 11:50:00.327 mycontraint[1929:98282] childview frame:, }-------childview bounds:, }

這個時候如果改變一下uiimageview的bounds,**如下:

//改變view中內部原點的位置,同樣可以改變frame的寬高

[girlimageview setbounds:cgrectmake(-30, -30, 240, 230)];

[self.view addsubview:girlimageview];//新增到父檢視中

nslog(@"girlimageview frame:%@------girlimageview bounds:%@",nsstringfromcgrect(girlimageview.frame),nsstringfromcgrect(girlimageview.bounds));

效果:

列印效果如下:

2015-04-03 11:57:06.738 mycontraint[2019:102665] girlimageview frame:, }------girlimageview bounds:, }

2015-04-03 11:57:06.739 mycontraint[2019:102665] childview frame:, }-------childview bounds:, }

通過以上的**的演示,frame和bounds之間的關係應該很清晰了,如果有疑問,歡迎共同**~

iOS開發 View中frame和bounds區別

開發中調整view的時候的經常會遇到frame和bounds,剛開始看的時候不是很清楚,不過看了一下官方文件,frame是確定檢視在父檢視中的位置,和本身的大小,bounds確定可以確定子檢視在當前檢視中的位置,還可以改變view的大小,如果bounds確定大小,那麼view的檢視優先選擇的boun...

修改IB中view的frame

問題案例 自定義cell用xib定義,cell子檢視中某個label的內容由網路獲取,因為這個label加了邊框,在獲取資料後需要調整寬度 用sizetofit方法即可 實測發現,這個label有時候寬度確實根據內容變化了,邊框顯示良好,但有時候還是ib裡定義的寬度。原因 想到的解決方案 2.ib裡...

關於ios中bounds與frame

1.ios中的bounds是指相對於檢視自己的座標,所以預設view.bounds.origin 0,0 2.ios中的frame是指相對于父檢視的座標 3.當bounds改變的時候,會影響到frame 比如下面的 cgrect frame cgrectmake 0,0,200,200 uilabe...