iOS開發frame, contentSize, contentOffset, contentInset 區別聯絡淺析

來源:互聯網
上載者:User

標籤:

 1. 概述

iOS開發中,必然會涉及到布局相關問題,frame,bounds,contenSize,contentOffset,contentInset這幾個布局相關概念讓許多初學者感到困惑。雖然初步瞭解這幾個概念,即可完成大部分介面的布局,但布局較複雜頁面時就有點力不從心了。

2. 概念解析2.1 frame

frame是一個矩形地區,反映當前view相對於它的superview的位置關係,左上方的點(frame.origin)的x,y軸值確定了矩形地區的位置(frame.origin.x, frame.origin.y);寬(frame.size.width)和高(frame.size.height)確定了矩形的面積。

2.2 bounds

bounds與frame類似,同樣是一個矩形地區,有與frame一樣的屬性,但與frame以其父視圖為參考不同的是bounds以當前視圖為參考,反映的是當前view自己的位置關係。frame和bound都可以使同一個視圖(控制項)在同一位置。但根據實際情況靈活使用frame和bounds可以使代碼邏輯簡化,降低布局的相互依賴。

2.3 contentSize

contentSize是UIScrollView和繼承於UIScrollView的子控制項的屬性,contentSize是確定UIScrollView上contentView寬(contentSize.width)和高(conteSize.height)的屬性。
UIScrollView可以看成是一個兩層的複合視圖,1所示,上層是固定不動的UIScrollView,下層是可以滑動的contenView,contenView的尺寸可以大於上層的UIScrollView。


圖1 UIScrollView層次關係2.4 contentOffset

contentOffset是UIScrollView和繼承於UIScrollView的子控制項的屬性,contentOffset確定的是UIScrollView的頂點(左上方點)值相對於其父類別檢視的頂點值(即frame.origin)的距離。

2.5 contentInset

contentInset是UIScrollView和繼承於UIScrollView的子控制項的屬性,contentInset確定的是contenView上下左右相對於UIScrollView擴充出來的地區大小。contentInset是UIEdgeInsets類型的,預設值為UIEdgeInsetsZero。

3. 總結

frame,bounds,contenSize,contentOffset,contentInset是布局中常用的屬性,靈活使用會大大提升開發效率、布局的靈活性和代碼的邏輯性,涉及屬性的總結2所示。


圖2 布局相關屬性之間關係

注意:圖中contentInset的值為負值

 

轉載自:http://www.jianshu.com/p/c36d3fb3c833 

iOS開發frame, contentSize, contentOffset, contentInset 區別聯絡淺析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.