iOS界面編程之界面管理(一)

一、UIView

UIView是iPhone程序非常重要的元素。所有可視化控件都繼承于UIView并展示各自獨特的功能,如UILabel展示文字、UIImageView顯示圖片,這才形成了豐富絢麗、形形色色的程序界面。UIView主要有三方面功能:

  • 渲染區域內容與執行動畫
  • 管理子視圖
  • 處理觸摸、手勢等事件

二、iOS界面層次結構

iPhone程序以樹形結構管理其上的控件,每個視圖都置于其父視圖上并管理著自己的子視圖。


view.png

一般而言,程序界面以UIWindow為樹根節點,管理所有子視圖。UIWindow也是UIView的子類,但是UIWindow并不無任何可視化內容,它只負責管理其上的子視圖。一般而言,每個應用程序只有一個UIWindow。事實上Android,Cocos2d-x等也是采用這樣的樹形管理策略。這種樹形結構的優勢在于渲染時通過簡單的樹深度優先原則即可正確渲染界面。另一方面,這樣的樹形結構在消息傳遞方面也是很便捷。例如一個觸摸事件放生時,UIWindow首先接收到消息,然后將消息傳遞給響應的子視圖,響應子視圖又再傳給它的子視圖。通過這樣的層級傳遞,可以效率較高地找到真正的響應對象。

三、界面更新原理

在與程序的交互中(觸摸屏幕,手勢操作等),界面經常需要更新。這些界面的更新過程是怎樣的呢?


drawing_model.jpg

以觸摸事件為例從觸摸事件的發生到界面改變主要經過八個步驟:

  • 用戶觸摸屏幕
  • 硬件將觸摸事件傳遞到UIKit框架
  • UIKit框架將觸摸事件打包成UIEvent對象并傳遞給響應View
  • View接收到事件后更改視圖內容
  • UIKit發起重新布局視圖
  • UIKit發起重新渲染繪制視圖
  • 更改的視圖發送給GPU
  • GPU重新繪制視圖并在屏幕中顯示
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容