內容簡介
《iOS SDK編程實戰》是初學者進入iOS開發領域的敲門磚;是讓身為程式設計師的讀者可以早點完成工作,早日讓自己的App上架賺大錢;是開 發者必 備的學習手冊和學以致用的權 威指南。
《iOS SDK編程實戰》除了一般iOS程式設計書籍比較常見的基本技術,如Objective-C與
MVC設計模式的內容外,在本書的後半段著重介紹頁面的連貫與頁面管理,包括利用Storyboard與View Controller的互動,做到多樣化、層級與一致的頁面籃促腿呈現,Storyboard的設計樣式讓設計App就像在講故事,連貫而順暢,這同時也是iOS開發**經典的地方之一。另外,在多媒體實現、觸控動畫及圖像處理等內容中,讀者可以從實例演練中學到iOS程式開發的概念與技巧,達到事半功倍的效果,並學會自行擴展iOS程式開發技能的深度和廣度,注入個人的創意,創造出全新的價值。
《iOS SDK編程實戰》適合iOS初學者閱讀,也適合程式設計師使用,以及作為大專院校的師生用書和相關培訓學校的教材。
圖書目錄
第 一篇 iOS開發基礎知才槳棕犁識
第0章 在項目開發之前 2
0.1 知識的準備 2
0.2 軟體的準備 3
0.3 硬體的準備 4
0.4 設計模式的準備捉煉 5
0.4.1 Model-View-Controller設計模式 5
0.4.2 Delegation設計模式 7
0.4.3 Target-Action設計模式 8
總結 9
第 1章 Xcode與開發環境 10
1.1 OS X與開發相關的特點 10
1.1.1 使用Dock啟動應用程式與查看狀態 11
1.1.2 使用Finder來顯示檔案和的結構與信息 11
1.1.3 使用Spotlight來快速搜尋檔案 13
1.1.4 使用terminal來進行文本模式的命令行操作 13
1.2 認識Xcode與開發環境 13
1.2.1 Xcode的偏好設定 14
1.2.2 Xcode的工作空間 15
1.3 開發設備管理店芝棗 17
1.4 程式代碼庫管理 18
1.5 項目管理 19
1.6 存檔目標管理 20
1.7 說明檔案管理 21
總結 22
第 2章 Objective-C與對象基礎 23
2.1 命令行模式項目與Foundation框架 23
2.2 Objective-C的類 26
2.2.1 類的聲明 27
2.2.2 類的成員變數與函式 28
2.2.3 實現類的成員函式 29
2.2.4 聲明與實現的切換 30
2.2.5 函式的多參數 32
2.3 Objective-C的對象實例 33
2.3.1 對對立故阿獄象傳送訊息 34
2.3.2 從類生成對象 35
2.4 使用靜態程式分析器 37
2.4.1 靜態程式代碼分析 37
2.4.2 對象的管理與retaincount(保留計數器) 38
2.4.3 釋放分配的記憶體 39
2.5 Property(屬性)的定義 39
2.5.1 屬性的聲明 39
2.5.2 屬性的實現 40
2.5.3 設值函式的屬性 42
2.5.4 @property能設定的其餘屬性 47
2.6 Objective-C中的字元串 47
2.6.1 字元串的聲明 48
2.6.2 使用格式化字元串來動態產生字元串的內容 49
總結 51
第3章 iOS應用程式與生命周期 52
3.1 創建一個空白的iOS項目 匪微樂52
3.1.1 使用項目嚮導生成iOS空白項目 52
3.1.2 iOS項目的運行 54
3.1.3 委託的設計模式 56
3.1.4 委託類與應用程式生命周期的建立 57
3.2 XIB檔案辨頌踏與Model View Controller(MVC)設計模式 65
3.2.1 使用項目嚮導生成單一視角應用程式(Single View Application) 65
3.2.2 xib版面配置檔案與MVC的設計樣式 67
3.3 Storyboard的版面配置檔案 71
3.3.1 應用程式的初始化與plist檔案 72
3.3.2 Storyboard的操作與MVC的設計模式 74
3.4 實現MVC界面 77
3.4.1 新增應用程式初始主界面檔案 77
3.4.2 在界面檔案中載入View Controller組件 78
3.4.3 實現定製化View Controller組件 80
總結 83
第4章 Objective-C進階 84
4.1 iOS與協定Protocol 84
4.1.1 聲明協定與要實現的函式 85
4.1.2 由其他對象實現的函式 86
4.1.3 協定之間的引用 89
4.2 Collection框架 91
4.2.1 CocoaTouch中的Collection 91
4.2.2 使用數組(NSArray)來存取順序的數據 91
4.2.3 使用NSArray來定義不可變的數組 93
4.2.4 使用快速枚舉(FastEnumeration)的方式獲取對象 96
4.2.5 使用NSMutableArray來定義可變大小的數組 98
4.2.6 使用Set來存取不可重複的數據 101
4.2.7 使用NSSet定義不可變的Set 101
4.2.8 使用NSMutableSet定義可變大小的集合 104
4.2.9 使用NSCountedSet來獲取重複對象的數量 105
4.2.10 使用鍵值存取Dictionary中的內容 107
4.2.11 使用NSDictionary定義不可變的dictionary 107
4.2.12 使用NSMutableDictionary定義可變的dictionary 108
4.2.13 使用NSIndexSet來獲取數組的任意索引值 109
4.2.14 在NSMutableIndexSet中新增區域 111
4.2.15 在NSMutableIndexSet中刪除區域 111
總結 112
第5章 用戶界面設計 113
5.1 認識Xcode的界面編輯器與開發用戶界面 113
5.2 使用IBAction與IBOutlet連結程式和用戶界面 116
5.2.1 連線用戶界面與IBOutlet變數 116
5.2.2 從用戶界面生成IBOutlet變數 121
5.2.3 連結用戶界面與IBAction函式 124
5.2.4 從用戶界面產生IBAction函式 129
5.3 處理文本框 132
5.3.2 讓文本框能與程式互動 134
5.4 設定組件的位置和大小 138
5.5 使用代碼生成組件 139
5.5.1 利用代碼生成文本框 140
5.5.2 按照對象的標識符來判定不同的文本框並做出反應 142
5.5.3 標籤的屬性設定 143
5.5.4 設定按鈕組件的屬性 145
5.5.5 IBAction和IBOutlet的互動 150
總結 154
第 二篇 頁面的切換
第6章 實現多界面應用程式 156
6.1 公用程式模板應用程式 156
6.1.1 新增公用程式模板應用程式 156
6.1.2 從應用程式模板嚮導新增使用storyboard的公用程式(Utility Application) 159
6.2 標籤式模板應用程式 161
6.2.1 在xib下新增一個標籤頁面 162
6.2.2 在storyboard下新增標籤頁面 166
6.2.3 連線storyboard和類檔案,用代碼控制用戶界面 169
6.2.4 多標籤的處理 170
6.2.5 標籤欄模板的圖示處理 171
6.3 頁面模板應用程式 174
6.4 具備主從關係的模板檔案 177
6.4.1 數據的新增/刪除 180
6.4.2 應用程式的生命周期 181
6.4.3 主從關係的storyboard項目模板 182
總結 186
第7章 頁面管理 188
7.1 使用View Controller進行頁面的旋轉和轉置 188
7.1.1 xib中可視化組件旋轉後的擺放 191
7.1.2 適應不同螢幕而提供不同的xib組件 195
7.2 使用UINavigation Controller(導航控制器)進行多頁面的順序遍歷 199
7.2.1 導航控制器的基本操作 200
7.2.2 在單一視角項目(Single View Project)中新增導航欄 201
7.2.3 xib中對導航欄的模擬 204
7.2.4 在標籤欄項目中新增導航欄 204
7.2.5 利用UINavigationController進行頁面切換 206
7.3 導航欄的套用 211
7.3.1 使用導航欄進入View Controller的編輯模式 212
7.3.3 導航欄的工具列 215
7.3.4 導航欄工具列的自定義按鈕 217
7.4 建立滾動條視窗組件 218
7.4.1 新增滾動條組件 219
7.4.2 在滾動條組件中新增內容 221
7.5 取得委託對象的實例 223
總結 225
第8章 使用Storyboard進行界面設計 226
8.1 從xib到storyboard 226
8.2 在空白項目中使用storyboard 227
8.2.1 新增storyboard檔案 228
8.2.2 設定項目主要的storyboard檔案 229
8.2.3 storyboard的操作 230
8.2.4 連線storyboard和View Controller 232
8.2.5 修改默認項目並運行 233
8.2.6 導航欄與storyboard 234
8.2.7 標籤欄與storyboard 236
8.3 storyboard與View Controller的互動 237
8.3.1 在場景中加入用戶互動組件 237
8.3.2 載入storyboard中單獨的View Controller 237
8.3.3 載入外部xib的View Controller 240
8.4 在Scene中使用Segue設定界面的連貫 241
8.4.1 Modal類型的Segue 242
8.4.2 Push類型的Segue 244
8.5 Segue與數據傳遞 246
8.6 從程式中驅動Segue 249
8.7 Storyboard和靜態表格 251
8.7.1 設定靜態表格的類型 252
8.7.2 分欄與區域標題結尾 255
8.7.3 靜態表格與Segue 256
8.8 Segue與動態切換 257
總結 258
第三篇 常用的Cocoa Touch框架
第9章 實現多語言支持 260
9.1 iOS下多語言的設定 260
9.2 多語言字元串的處理 261
9.2.1 新增字元串檔案 262
9.2.2 編寫字元串檔案 263
9.2.3 多語言測試時的錯誤排除 267
9.3 從現有程式產生多語言字元串資源檔案 268
9.4 使用多語言的注釋 269
9.5 取得默認的語言 271
9.6 xib檔案的多語言 272
9.6.1 多語言xib檔案的選擇 272
9.6.2 多語言xib檔案的實現 273
總結 277
第 10章 iOS應用程式的常用行為 278
10.1 調用的系統URL 278
10.1.1 調用應用程式自定義的URLScheme 279
10.1.2 調用瀏覽器Safari瀏覽連結 280
10.1.3 傳送E-mail的調用 281
10.1.4 撥打電話的調用 283
10.1.5 傳送簡訊的調用 285
10.1.6 訪問地圖的調用 286
10.1.7 播放優酷視頻 290
10.1.8 打開App Store的調用 292
10.2 操作用戶偏好來存放應用程式的常用設定 293
10.2.1 認識「設定」應用程式 294
10.2.2 定義用戶偏好值 294
10.2.3 用戶偏好的圖示 296
10.2.4 用戶偏好的多語言界面 298
10.2.5 plist檔案的編輯方式 299
10.2.6 新增用戶偏好的組 300
10.2.7 用戶偏好的文字欄位 302
10.2.8 用戶偏好的選項界面 303
10.2.9 用戶偏好的開關選項 305
10.2.10 用戶偏好的標題選項 306
10.2.11 用戶偏好的滑桿選項 308
10.2.12 用戶偏好的子選項 309
10.3 讀取用戶偏好的設定值 312
10.3.1 使用NSUserDefaults類讀取用戶偏好 312
10.3.2 檢測用戶偏好的變更 314
10.3.3 使用NSUserDefaults類設定用戶偏好 315
10.3.4 用戶偏好值的調試 318
總結 320
第 11章 表格的使用 321
11.1 使用UITableViewController 322
11.2 使用datasource定義表格的數據 326
11.2.1 定製化表格的內容 330
11.2.3 表格的編輯模式 334
11.3 表格的delegate對象 335
11.3.1 新增表格的內容 338
11.3.2 刪除表格的內容 344
總結 346
第 12章 使用CoreData 347
12.1 Core Data的架構 349
12.2 在程式中加入Core Data的功能 349
12.3 新增數據 355
12.4 查詢數據 357
12.5 刪除數據 361
12.6 修改數據 362
總結 367
第 13章 檔案存取與多執行緒 368
13.1 存取應用程式中的檔案 368
13.1.1 使用NSBundle存取應用程式中的檔案 369
13.1.2 讀取Bundle中的文字 371
13.1.3 Bundle和Retina資源的準備 373
13.2 應用程式的檔案和外部的互動 376
13.3 使用定時組件在特定時間執行程式 378
13.3.1 使用NSTimer定時組件 379
13.3.2 只執行一次的定時器 379
13.3.3 在NSTimer中傳入參數 382
13.3.4 持續執行的定時器 382
13.3.5 結合定時器和Run Loop 384
13.4 使用多執行緒進行異步執行 386
13.4.1 使用NSThread新增執行緒並執行 386
13.4.2 線上程中使用參數 387
13.5 操作對象和操作佇列 389
13.5.1 使用NSInvocationOperation建立操作對象 390
13.5.2 繼承NSOperation類建立操作對象 392
13.5.3 操作對象之間的依賴關係 394
總結 397
第 14章 Block與GCD 398
14.1 定義與實現Block 398
14.1.1 從函式到Block 399
14.1.2 typedef和block變數 400
14.1.3 Block所能存取的變數 401
14.1.4 Block中變數的設值與block變數 404
14.1.5 使用Block存取靜態變數 406
14.1.6 Block的語法 407
14.2 Block的調試 408
14.3 Block的套用 412
14.3.1 Block用於viewcontroller 412
14.3.2 在Collection中使用Block 414
14.3.3 Block用於字典的循環 416
14.3.4 Block套用於集合(Set)的循環 416
14.3.5 用於數組中對象的排序 417
14.3.6 Block用於數組中對象的過濾 420
14.4 使用GCD執行block代碼 422
14.4.1 GCD與Block 422
14.4.2 取得主執行緒的佇列並順序執行 424
14.4.3 取得其他執行的佇列 425
14.4.4 同步執行佇列的注意事項 427
14.4.5 GCD與並行執行 430
14.4.6 延遲執行block 432
總結 433
第四篇 繪圖、觸控與多媒體
第 15章 使用CoreGraphic繪製圖形 436
15.1 繪圖的概念 436
15.1.1 繪圖上下文 437
15.1.2 CoreGraphic的基本類型與運算 437
15.2 使用UIView進行繪圖 441
15.2.1 UIView的繪圖周期 441
15.2.2 UIView和繪圖上下文 442
15.2.3 在UIView中繪製貝茲路徑(BezierPath) 442
15.2.4 路徑的填充和樣式 446
15.2.5 繪製圓弧與曲線與路徑端點 449
15.2.6 路徑和轉換運算 452
15.2.8 使用CoreGraphics函式進行繪圖 462
15.2.9 使用CurrentTransformMatrix進行繪圖坐標轉換 464
15.2.10 填充的順序與色彩的調和 466
總結 468
第 16章 切換效果與動畫 469
16.1 使用切換動畫切換畫面 469
16.1.1 單一視窗的切換動畫 469
16.1.2 從一視窗組件切換到另一個視窗組件 472
16.2 使用UIView製作基礎動畫 476
16.2.1 取得UIView下的CALayer進行動畫 476
16.2.2 同時執行兩個屬性的動畫或先後執行兩個屬性的動畫 479
16.2.3 動畫的參數與重複循環 480
16.2.4 多重動畫的使用 481
16.2.5 取得UIView下的CALayer進行動畫 483
16.3 使用CALayer製作動畫 484
16.3.1 建立CALayer進行不需明確聲明的動畫 485
16.3.2 使用CAShapeLayer建立幾何動畫圖層 487
16.3.3 使用CATextLayer建立文字動畫圖層 490
16.3.4 使用CAReplicatiorLayer建立樣式重複的對象 493
16.4 使用Core Animation進行明確聲明的動畫 495
16.4.1 使用CABasicAnimation實現線性改變屬性的動畫 497
16.4.2 使用CAMediaTiming類進行動畫屬性的控制 501
16.4.3 設定動畫的委託對象與委託函式控制 502
16.4.4 使用CAKeyFrameAnimation進行關鍵界面的設定 504
16.4.5 在明確的動畫聲明中同步使用多重動畫屬性 505
16.4.6 動畫執行完成後的回響與順序動畫 507
16.5 在CALayer的2.5度空間製作動畫 509
16.5.1 Z軸的變換與視點的建立 511
16.5.2 三度空間的旋轉 514
總結 516
第 17章 觸控 517
17.1 觸控與事件 517
17.1.1 UITouch觸控事件類 518
17.1.2 結合觸控與用戶界面 520
17.2 觸控區域的判定 526
17.3 觸控與手勢 530
17.3.1 位移的手勢識別 532
17.3.2 滑動的手勢識別 535
17.3.3 旋轉的手勢識別 538
17.3.4 縮放的手勢識別 539
17.3.5 點擊的手勢識別 542
17.3.6 長按的手勢識別 544
17.3.7 識別器的委託函式 547
17.3.8 多重識別器的合併使用 549
17.4 多點觸控 550
17.5 結合觸控與繪圖 552
總結 555
第 18章 相機和濾鏡 556
18.1 圖片集與相片 556
18.1.1 UIImagePickerController的初始化 556
18.1.2 使用相機功能 562
18.1.3 UIImagePickerController的委託對象 565
18.1.4 儲存相機提取的界面 569
18.2 CoreImage與濾鏡 571
18.2.1 濾鏡與影像 571
18.2.2 內建的濾鏡 572
18.2.3 濾鏡的屬性 575
18.3 濾鏡的使用 582
18.3.1 使用CIColorInvert色彩反轉濾鏡 583
18.3.2 使用CISepiaTone深褐色調濾鏡 584
18.3.3 使用CIHueAdjust色彩調整濾鏡 585
18.3.4 使用CIVignette漸變濾鏡 587
18.3.5 使用CICheckterboardGenerator產生棋盤效果 588
18.3.6 使用濾鏡混合圖形 591
18.4 多重濾鏡的使用 593
總結 595
第 19章 影音播放 596
19.1 聲音播放 596
19.1.1 使用AVAudioPlayer框架 596
19.1.2 取得聲音檔案的信息 599
19.1.3 播放多重音軌 603
19.1.4 AVAudioPlayer的委託對象與中斷處理 604
19.1.5 在後台執行音樂 606
19.2 影片播放 607
19.2.1 使用MPMoviePlayerController類播放影片 607
19.2.2 播放流媒體影音 610
19.2.3 使用AVPlayer類播放影片 614
19.2.4 影片與外接螢幕 617
總結 620
第五篇 地圖與網路存取
第 20章 地圖與GPS 622
20.1 使用MKMapView顯示地圖 622
20.1.1 地理信息相關的數據結構 623
20.1.2 在MapView中設定位置 625
20.1.3 在MapView移動中心點 626
20.1.4 使用MKMapPoint標記地圖 628
20.1.5 地圖的回響函式 630
20.2 地圖的標記 631
20.2.1 建立遵循MKAnnotation協定的對象 632
20.2.2 使用MKAnnotationView自定義地標 634
20.2.3 設定加入產生的地標之後的回響函式 635
20.2.4 地標詳細信息 637
20.2.5 地點標記的拖曳與移動 638
20.3 取得用戶位置的標記 640
20.4 地圖與定製化圖層 641
20.4.1 繪製圓形的地圖圖層 642
20.4.2 繪製多邊形線段的地圖圖層 643
20.4.3 繪製多邊形的地圖圖層 644
20.5 使用地理信息編碼 645
總結 646
第 21章 常用的網路存取功能 647
21.1 顯示網頁 647
21.1.1 使用UIWebView 647
21.1.2 使用UIWebViewDelegate查看網頁內容 649
21.2 同步與異步的數據存取 650
21.2.1 使用NSURLConnection執行異步調用 651
21.2.2 使用NSURLConnection執行同步調用 653
21.2.3 同步調用與GCD的異步執行 654
21.3 讀取JSON格式 656
21.3.1 將Foundation對象轉成JSON對象 656
21.3.2 從網路上讀取JSON對象 658
21.4 整合Facebook 660
21.4.1 下載FacebookSDK 661
21.4.2 設定Facebook應用程式並取得AppID 662
21.4.3 初始化Facebook對象 663
21.4.4 實現Facebook的登入與註銷 665
總結 667
4.2.5 使用NSMutableArray來定義可變大小的數組 98
4.2.6 使用Set來存取不可重複的數據 101
4.2.7 使用NSSet定義不可變的Set 101
4.2.8 使用NSMutableSet定義可變大小的集合 104
4.2.9 使用NSCountedSet來獲取重複對象的數量 105
4.2.10 使用鍵值存取Dictionary中的內容 107
4.2.11 使用NSDictionary定義不可變的dictionary 107
4.2.12 使用NSMutableDictionary定義可變的dictionary 108
4.2.13 使用NSIndexSet來獲取數組的任意索引值 109
4.2.14 在NSMutableIndexSet中新增區域 111
4.2.15 在NSMutableIndexSet中刪除區域 111
總結 112
第5章 用戶界面設計 113
5.1 認識Xcode的界面編輯器與開發用戶界面 113
5.2 使用IBAction與IBOutlet連結程式和用戶界面 116
5.2.1 連線用戶界面與IBOutlet變數 116
5.2.2 從用戶界面生成IBOutlet變數 121
5.2.3 連結用戶界面與IBAction函式 124
5.2.4 從用戶界面產生IBAction函式 129
5.3 處理文本框 132
5.3.2 讓文本框能與程式互動 134
5.4 設定組件的位置和大小 138
5.5 使用代碼生成組件 139
5.5.1 利用代碼生成文本框 140
5.5.2 按照對象的標識符來判定不同的文本框並做出反應 142
5.5.3 標籤的屬性設定 143
5.5.4 設定按鈕組件的屬性 145
5.5.5 IBAction和IBOutlet的互動 150
總結 154
第 二篇 頁面的切換
第6章 實現多界面應用程式 156
6.1 公用程式模板應用程式 156
6.1.1 新增公用程式模板應用程式 156
6.1.2 從應用程式模板嚮導新增使用storyboard的公用程式(Utility Application) 159
6.2 標籤式模板應用程式 161
6.2.1 在xib下新增一個標籤頁面 162
6.2.2 在storyboard下新增標籤頁面 166
6.2.3 連線storyboard和類檔案,用代碼控制用戶界面 169
6.2.4 多標籤的處理 170
6.2.5 標籤欄模板的圖示處理 171
6.3 頁面模板應用程式 174
6.4 具備主從關係的模板檔案 177
6.4.1 數據的新增/刪除 180
6.4.2 應用程式的生命周期 181
6.4.3 主從關係的storyboard項目模板 182
總結 186
第7章 頁面管理 188
7.1 使用View Controller進行頁面的旋轉和轉置 188
7.1.1 xib中可視化組件旋轉後的擺放 191
7.1.2 適應不同螢幕而提供不同的xib組件 195
7.2 使用UINavigation Controller(導航控制器)進行多頁面的順序遍歷 199
7.2.1 導航控制器的基本操作 200
7.2.2 在單一視角項目(Single View Project)中新增導航欄 201
7.2.3 xib中對導航欄的模擬 204
7.2.4 在標籤欄項目中新增導航欄 204
7.2.5 利用UINavigationController進行頁面切換 206
7.3 導航欄的套用 211
7.3.1 使用導航欄進入View Controller的編輯模式 212
7.3.3 導航欄的工具列 215
7.3.4 導航欄工具列的自定義按鈕 217
7.4 建立滾動條視窗組件 218
7.4.1 新增滾動條組件 219
7.4.2 在滾動條組件中新增內容 221
7.5 取得委託對象的實例 223
總結 225
第8章 使用Storyboard進行界面設計 226
8.1 從xib到storyboard 226
8.2 在空白項目中使用storyboard 227
8.2.1 新增storyboard檔案 228
8.2.2 設定項目主要的storyboard檔案 229
8.2.3 storyboard的操作 230
8.2.4 連線storyboard和View Controller 232
8.2.5 修改默認項目並運行 233
8.2.6 導航欄與storyboard 234
8.2.7 標籤欄與storyboard 236
8.3 storyboard與View Controller的互動 237
8.3.1 在場景中加入用戶互動組件 237
8.3.2 載入storyboard中單獨的View Controller 237
8.3.3 載入外部xib的View Controller 240
8.4 在Scene中使用Segue設定界面的連貫 241
第 16章 切換效果與動畫 469
16.1 使用切換動畫切換畫面 469
16.1.1 單一視窗的切換動畫 469
16.1.2 從一視窗組件切換到另一個視窗組件 472
16.2 使用UIView製作基礎動畫 476
16.2.1 取得UIView下的CALayer進行動畫 476
16.2.2 同時執行兩個屬性的動畫或先後執行兩個屬性的動畫 479
16.2.3 動畫的參數與重複循環 480
16.2.4 多重動畫的使用 481
16.2.5 取得UIView下的CALayer進行動畫 483
16.3 使用CALayer製作動畫 484
16.3.1 建立CALayer進行不需明確聲明的動畫 485
16.3.2 使用CAShapeLayer建立幾何動畫圖層 487
16.3.3 使用CATextLayer建立文字動畫圖層 490
16.3.4 使用CAReplicatiorLayer建立樣式重複的對象 493
16.4 使用Core Animation進行明確聲明的動畫 495
16.4.1 使用CABasicAnimation實現線性改變屬性的動畫 497
16.4.2 使用CAMediaTiming類進行動畫屬性的控制 501
16.4.3 設定動畫的委託對象與委託函式控制 502
16.4.4 使用CAKeyFrameAnimation進行關鍵界面的設定 504
16.4.5 在明確的動畫聲明中同步使用多重動畫屬性 505
16.4.6 動畫執行完成後的回響與順序動畫 507
16.5 在CALayer的2.5度空間製作動畫 509
16.5.1 Z軸的變換與視點的建立 511
16.5.2 三度空間的旋轉 514
總結 516
第 17章 觸控 517
17.1 觸控與事件 517
17.1.1 UITouch觸控事件類 518
17.1.2 結合觸控與用戶界面 520
17.2 觸控區域的判定 526
17.3 觸控與手勢 530
17.3.1 位移的手勢識別 532
17.3.2 滑動的手勢識別 535
17.3.3 旋轉的手勢識別 538
17.3.4 縮放的手勢識別 539
17.3.5 點擊的手勢識別 542
17.3.6 長按的手勢識別 544
17.3.7 識別器的委託函式 547
17.3.8 多重識別器的合併使用 549
17.4 多點觸控 550
17.5 結合觸控與繪圖 552
總結 555
第 18章 相機和濾鏡 556
18.1 圖片集與相片 556
18.1.1 UIImagePickerController的初始化 556