日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS中frame和Bounds之间的区别

發布時間:2024/7/23 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS中frame和Bounds之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

frame

  frame是每個view必備的屬性,代表的是當前視圖的位置和大小,沒有設置他,當前視圖是看不到的。位置需要有參照物才能確定,數學中我們用坐標系來確定坐標系中的某個點的位置,iOS中有他特有的坐標系,如下圖:

iOS坐標系

  ??在iOS坐標系中以左上角為坐標原點,往右為X正方向,往下是Y正方向

  ??frame中的位置是以父視圖的坐標系為標準來確定當前視圖的位置

  ??同樣的默認情況下,本視圖的左上角就是子視圖的坐標原點

  ??更改frame中位置,則當前視圖的位置會發生改變

  ??更改frame的大小,則當前視圖以當前視圖的左上角為基準的進行大小的修改

  bounds

  bounds是每個View都有的屬性,這個屬性我們一般不進行設置,他同樣代表位置和大小;每個視圖都有自己的坐標系,且這個坐標系默認以自身的左上角為坐標原點,所有子視圖以這個坐標系的原點為基準點。bounds的位置代表的是子視圖看待當前視圖左上角的位置;bounds的大小代表當前視圖的大小;

  ??更改bounds中的位置對于當前視圖沒有影響,相當于更改了當前視圖的坐標系,對于子視圖來說當前視圖的左上角已經不再是(0,0), 而是改變后的坐標,坐標系改了,那么所有子視圖的位置也會跟著改變

  ??更改bounds的大小,bounds的大小代表當前視圖的長和寬,修改長寬后,中心點繼續保持不變, 長寬進行改變;通過bounds修改長寬看起來就像是以中心點為基準點對長寬兩邊同時進行縮放;

  frame和bounds

  有如下圖:

iOS bounds

  

  View A是最頂層視圖, 因此他的信息如下:frame?origin:0, 0 size :550 * 400

  bounds?origin:0, 0 size 550 * 400

  因為是View A是頂層視圖,所以其實相當于覆蓋在框架上,因此位置從父視圖的(0, 0)開始,大小為550*400默認情況下,本視圖的坐標系是沒有發生改變的即當前視圖(view A)的左上角就是所有子視圖的原點,大小就是當前視圖的大小.

  View B是View A的子視圖,因此他的信息如下:?frame?origin:200, 100 size :200 * 250

  bounds?origin:0, 0 size :200 * 250

  因為View B是View A的子視圖,所以View B的frame位置需要以View A的左上角為參照,因此位置為(200, 100), 大小為200*250bounds在默認情況下本視圖的坐標系是沒有發生改變的即當前視圖(view B)的左上角就是當前視圖所有子視圖的原點.

  上面這種是普通的情況,也就是沒有更改bounds的時候,下面我們來看更改bounds的例子, 如下圖:

iOS bounds

  

  在上一個例子的基礎上,我們更改了view A的bounds后,view B看待View A的左上角就已經發生改變了;這個時候我們看待View A的左上角就不是坐標原點了,而是我們通過bounds設置后的坐標,如圖也就是(0, 100);在View B的frame沒有保存不變的基礎上,我們View B的位置向上移動了100

  在第一例的基礎上,更改了bounds中X后,效果圖如下:

iOS bounds 3

  總結

  1、frame不管對于位置還是大小,改變的都是自己本身

  2、frame的位置是以父視圖的坐標系為參照,從而確定當前視圖在父視圖中的位置

  3、frame的大小改變時,當前視圖的左上角位置不會發生改變,只是大小發生改變

  1、bounds改變位置時,改變的是子視圖的位置,自身沒有影響;其實就是改變了本身的坐標系原點,默認本身坐標系的原點是左上角

  2、bounds的大小改變時,當前視圖的中心點不會發生改變,當前視圖的大小發生改變,看起來效果就像縮放一樣。

  

  轉自:http://www.lanou3g.com/lozx/2582.html

總結

以上是生活随笔為你收集整理的iOS中frame和Bounds之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。