iOS 開發中關於Frame和約束的簡單認識

2021-07-22 11:34:34 字數 671 閱讀 1608

最初使用masonry的時候,發現使用masonry約束完的控制項並沒有frame值(沒呼叫layoutifneeded)方法,當時簡單的了解一下自動布局的原理,簡單說就是相對位置。而使用frame布局是直接就是有布局的位置值的。

2.storyboard載入控制器view的大小是螢幕的大小,xib載入控制器view的大小是xib的大小。

在storyboard裡面載入的控制器的view的時候,在-viewdidload:方法裡,列印view的frame發現此時的frame是螢幕的bounds,是符合正常邏輯的,但是如果用控制器的view是xib初始化的,那麼在-viewdidload:方法裡面列印view的frame發現此時的frame是xib的大小,可以在-viewdidload:裡先噶變view的大小,醉了。

3.用約束建立控制項,不要用frame的方式去更改。

用約束建立乙個控制項,但是此時如果在某個方法裡面手動使用frame的方式修改控制項的位置,那麼在手動旋轉螢幕之後,控制項的位置又會回到最初約束的狀態,frame方式失效。

總結:如果乙個控制項使用約束的方式布局,那麼它的同級(父檢視相同)布局最好也是用相同的布局方式,不要在這裡同時混用frame和約束(兩者則其一使用)

**:

關於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...

iOS開發 View中frame和bounds區別

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

iOS開發 View中frame和bounds區別

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