View Programming Guide 筆記

View and Window Architecture

View Hierarchies and Subview Management

  • 父視圖維護(hù)著一個(gè)子視圖數(shù)組,數(shù)組最后一個(gè)元素就是父視圖內(nèi)頂部的視圖

The View Drawing Cycle

  • 不改變視圖內(nèi)容不會(huì)調(diào)用重繪代碼
  • 改變視圖內(nèi)容不會(huì)馬上進(jìn)行重繪,需要調(diào)用 setNeddsDisplay 或者 setNeddsDisplayInRect ,這兩個(gè)方法會(huì)告訴系統(tǒng)需要重繪,系統(tǒng)會(huì)在當(dāng)前 runloop 結(jié)束以后開始重繪,這段時(shí)間還可以進(jìn)行更改
  • 改變視圖的形狀也不會(huì)調(diào)用重繪代碼,只有當(dāng)設(shè)置 contentMode 屬性為 UIViewContentModeRedraw 時(shí)才會(huì)調(diào)用

View Geometry and Coordinate Systems

  • iOS坐標(biāo)系原點(diǎn)是左上角,向右是 X 軸,向下是 Y 軸,UIWindows 和 UIView 有方法可以將一個(gè)坐標(biāo)系轉(zhuǎn)換到另一個(gè)坐標(biāo)系

The Relationship of the Frame, Bounds, and Center Properties

  • frame 指的是在父視圖坐標(biāo)系中指定了位置和大小,設(shè)置該值影響 bounds 和 center
  • bounds 指的是在自己的坐標(biāo)系中指定了大小,設(shè)置該值影響 frame
  • center 指的是在父視圖坐標(biāo)系中指定一個(gè)點(diǎn)作為自己的中心點(diǎn),設(shè)置該值影響frame
  • 子視圖超出父視圖的區(qū)域可以使用 clipsTobounds 消除

Tips for Using Views Effectively

  • 盡量減少繪制
  • 不設(shè)置 contentMode 屬性為 UIViewContentModeRedraw
  • 設(shè)置視圖為不透明
  • 滾動(dòng)會(huì)在短時(shí)間內(nèi)產(chǎn)生大量的視圖更新,建議在滾動(dòng)時(shí)可以改變 contentMode 屬性或者暫時(shí)改變呈現(xiàn)內(nèi)容的質(zhì)量
  • 不在視圖中嵌入自定義視圖,比如按鈕中嵌入一個(gè)自定義圖片

Views

Tweaking the Layout of Your Views Manually

  • 當(dāng) view 的 size 改變時(shí),會(huì)調(diào)用 layoutSubviews 方法
  • 在滾動(dòng)時(shí)會(huì)頻繁 layoutsubview,當(dāng)滾動(dòng)事件開始,跟視圖調(diào)用 setNeedsLayout , layoutSubviews 方法會(huì)根據(jù)偏移量來更改視圖位置
  • 在寫布局代碼時(shí),注意以下兩點(diǎn)
    • 改變?cè)O(shè)備方向時(shí)
    • 狀態(tài)欄高度改變,例如打電話時(shí)狀態(tài)欄高度會(huì)增加

Interacting with Core Animation Layers

  • 每個(gè) view 的 layerClass 默認(rèn)是 CALayer,可以通過重寫 layerClass 方法來返回其他的 layer,例如你使用了大范圍的滾動(dòng)區(qū)域,你可以使用 CATiledLayer
  • view 的 delegate 指向他自身的 layer
  • layer 不接收事件也不參與響應(yīng)鏈
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容