iOS 開發 frame和Bounds的不同

weixin_34107955發表於2015-10-15

簡單的說</br>

<code>frame</code> 指的是這個<code>view</code>在它<code>superview</code>的座標系的座標和大小.

<code>bounds</code>指這個<code>view</code>在它自己座標系的座標和大小</div></br>

看官方的解釋圖片

boyXiong
這裡寫圖片描述

通俗的說整個APP相當於一棟房子,而<code>frame</code>相當於窗戶,窗戶的位置是相對於牆壁來說的,但是<code> Bounds</code> 相當於窗戶裡面要顯示什麼內容的位置</br>

注意: 每個新建的<code> View</code>的<code> bounds</code>預設的 <code> ( x , y ) </code> 都是 <code> ( 0 , 0 ) </code>

但是: 如果是有導航條,且預設的控制器的<code> UIView</code>有子控制元件是繼承<code> UIScrollView</code>的會在呼叫了<code> viewDidLayoutSubviews</code>這個方法中預設給這些子控制元件的內邊距的頂部top增加導航條的高度也就是<code> 64 </code>

經過程式碼測試的出的結果:

boyXiong

結果表明:很明顯的<code> Bounds</code>的<code> y </code> 值和內邊距的<code> top </code>值發生了改變</br> 如何去掉這個功能,如果是程式碼建立的設定這個屬性為<code> false</code>就可以了

//Swift 寫法
self.navigationController?.automaticallyAdjustsScrollViewInsets = false

如果是<code> User Interface </code> 那麼就去掉勾選
boyXiong

相關文章