34. 簡述視圖控件器的生命週期(10分)。
答: loadView 儘管不直接調用該方法,如多手動創建自己的視圖,那麼應該覆蓋這個方法並將它們賦值給試圖控制器的 view屬性。
viewDidLoad 只有在視圖控制器將其視圖載入到內存之後才調用該方法,這是執行任何其他初始化操作的入口。
viewDidUnload 當試圖控制器從內存釋放自己的方法的時候調用,用於清楚那些可能已經在試圖控制器中創建的對象。
viewVillAppear 當試圖將要添加到窗口中並且還不可見的時候或者上層視圖移出圖層後本視圖變成頂級視圖時調用該方法,用於執行諸如改變視圖方向等的操作。實現該方法時確保調用[super viewWillAppear:].
viewDidAppear 當視圖添加到窗口中以後或者上層視圖移出圖層後本視圖變成頂級視圖時調用,用於放置那些需要在視圖顯示後執行的代碼。確保調用[super viewDidAppear :] 。
35. 動畫有基本類型有哪幾種;表視圖有哪幾種基本樣式(10分)?
答:動畫有兩種基本類型:隱式動畫和顯式動畫。
36. 實現簡單的表格顯示需要設置UITableView的什麼屬性、實現什麼協議(10分)?
答:實現簡單的表格顯示需要設置 UITableView的 dataSource 和 delegate 屬性,實現UITableViewDataSource 和UITableViewDelegate 協議。
37. Cocoa Touch提供了哪幾種Core Animation過渡類型(10分)?
答: Cocoa Touch 提供了 4 種 Core Animation 過渡類型,分別爲:交叉淡化、推擠、顯示和覆蓋。
38. UIView與CLayer有什麼區別(10分)?
答: 1. UIView 是 iOS 系統中界面元素的基礎,所有的界面元素都是繼承自它。它本身完全是由CoreAnimation 來實現的。它真正的繪圖部分,是由一個CALayer 類來管理。 UIView 本身更像是一個 CALayer的管理器,訪問它的跟繪圖和跟座標有關的屬性。
2. UIView 有個重要屬性layer ,可以返回它的主 CALayer 實例。
3. UIView 的 CALayer 類似 UIView的子 View 樹形結構,也可以向它的 layer 上添加子layer ,來完成某些特殊的表示。即CALayer 層是可以嵌套的。
4. UIView 的 layer 樹形在系統內部,被維護着三份 copy 。分別是邏輯樹,這裏是代碼可以操縱的;動畫樹,是一箇中間層,系統就在這一層上更改屬性,進行各種渲染操作;顯示樹,其內容就是當前正被顯示在屏幕上得內容。
5. 動畫的運作:對 UIView 的 subLayer(非主 Layer )屬性進行更改,系統將自動進行動畫生成,動畫持續時間的缺省值似乎是 0.5 秒。
6. 座標系統: CALayer 的座標系統比 UIView多了一個 anchorPoint 屬性,使用 CGPoint 結構表示,值域是0~1 ,是個比例值。這個點是各種圖形變換的座標原點,同時會更改layer 的 position 的位置,它的缺省值是 {0.5,0.5} ,即在 layer的中央。
7. 渲染:當更新層,改變不能立即顯示在屏幕上。當所有的層都準備好時,可以調用setNeedsDisplay 方法來重繪顯示。
8. 變換:要在一個層中添加一個3D 或仿射變換,可以分別設置層的 transform 或 affineTransform屬性。
9. 變形: Quartz Core 的渲染能力,使二維圖像可以被自由操縱,就好像是三維的。圖像可以在一個三維座標系中以任意角度被旋轉,縮放和傾斜。CATransform3D 的一套方法提供了一些魔術般的變換效果。