iOS界面應用界面主要是使用Cocoa Touch框架開發,它有一套本身的MVC模式,其中視圖和控制器是UIKit中的UIVIew及其子類和UIVIewController及其子類。app
Cocoa Touch中UIVIewController是全部控制器的基類,視圖控制器有不少種,下面先介紹一個iOS中的控制器種類和生命週期。框架
與導航相關的視圖控制器以下所示:iphone
UIViewController: 用於自定義視圖控制器的導航。例如對於兩個界面的跳轉,能夠用一個UIViewController來控制另兩個UIViewController。動畫
UINavigationController:導航控制器,它與UITableViewController結合使用,可以構建樹形結構導航模式spa
UITabBarController: 標籤欄控制器,用於構建樹形標籤導航模式設計
UIPageViewController:呈現電子書導航風格控制器對象
UISplitViewController:能夠把屏幕分割成幾塊的視圖控制器,主要爲iPad屏幕設計繼承
UIPopoverController:呈現氣泡風格視圖的控制器,主要爲iPad屏幕設計。生命週期
在應用運行過程當中視圖會顯示不一樣的狀態,這就是應用的生命週期。視圖生命週期的不一樣階段會回調視圖控制器的不一樣的方法,視圖控制器的生命週期以下圖所示:事件
視圖的生命週期主要有四種狀態:
視圖建立
視圖建立不加載到內存中,會調用viewDidLoad方法,可是視圖此時並不可見。該方法中一般會對所控制的視圖進行初始化處理。viewDidLoad方法在應用運行的時候只調用一次。
視圖可見
視圖可見先後會調用viewWillAppear和viewDidAppear兩個方法。
視圖不可見
視圖不可見先後會調用viewWillDisappear和viewDidDisappear兩個方法。
系統低內存
在低內存狀況下,iOS系統會調用didReceiveMemoryWarning方法,該方法的功能是釋放內存,包括視圖控制器中的一些成員變量和視圖的釋放。
Cocoa Touch中UIViewC是全部視圖的基類。
蘋果將UIKit框架中的視圖分爲如下幾個類別:
控件
繼承自UIController類,可以響應用戶高級事件。
窗口
它是UIWindow對象,一個iOS應用只有一個UIWindow對象,它是全部子視圖的父容器。
容器視圖
它是UIScrollView、UIToolbar及它們的子類。UIScrollView的子類有UITextView、UITabView和UICollectionView,在內容超出屏幕時,它們能夠提供水平或垂直滾動條。UIToolbar是很是特殊的容器,它可以包含其餘控件,通常置於屏幕底部,特殊狀況下也能夠置於屏幕頂部。
顯示視圖
用於顯示信息,包括UIImageView,UILabel、UIProgressView和UIActivityIndicatorView等
文本和Web視圖
提供了可以顯示多行文本的視圖,包含UITextView和UIWebView,其中UITextView也屬於容器視圖,UIWebView是可以加載和顯示HTML代碼的視圖。
導航視圖
爲用戶提供從一個屏幕到另外一個屏幕的導航視圖,它包括UITabBar和UINavigationBar。
警告框和操做表
用於給用戶提供一種反饋或者與用戶進行交互。警告框是能夠以動畫方式彈出來的視圖,而操做表是給用戶可選擇操做的視圖,在iphone中它會從屏幕底部彈出,在iPad中則會出如今屏幕中央。
通常狀況下,iOS用於中只包含一個UIWindow。從UI構建層次來說,UIWindow包含了一個根視圖UIView。根視圖通常也只有一個,置於UIWindow中。根視圖類型決定了應用程序的類型。應用界面的構建層次是一種樹形結構,以下圖所示:
簡要介紹圖中三個屬性的含義:
superview:得到父視圖對象
subviews:得到子視圖對象集合
window:得到視圖所在的界面Window對象