內容簡介
全書共42章,循序漸進地講解了iOS 10套用開發的知識。本書從搭建開發環境講起,依次講解了Objective-C語言基礎,Swift語言基礎,Cocoa Touch,Xcode Interface Builder界面開發,使用Xcode編寫MVC程式,文本框和文本視圖,按鈕和標籤,滑塊、步進和圖像,使用開關控制項和分段控制項,Web視圖控制項和可滾動視圖控制項,提醒和操作表,工具列,日期選擇器,表視圖,活動指示器,進度條和檢索條,UIView,視圖控制器,實現多場景和彈出框,iPad彈出框和分割視圖控制器,界面旋轉,圖形、圖像、圖層和動畫,聲音服務,多媒體套用,定位處理,觸摸,手勢識別和Force Touch,讀寫應用程式數據,觸摸和手勢識別,和硬體之間的操作,開發通用的項目程式,推服務和多執行緒,Touch ID,遊戲開發,HealthKit健康套用開發,watchOS 3智慧型手錶開發,分屏多任務,使用CocoaPods依賴管理,使用擴展(Extension),在程式中加入Siri功能,開發tvOS程式,分屏多視圖播放器,tvOS電影庫系統等高 級知識。
本書內容全面,幾乎涵蓋了iOS 10套用開發所需要的主要內容,全書內容言簡意賅,講解方法通俗易懂。
本書適合iOS初學者、iOS程式設計師、iPhone開發人員、iPad開發人員學習,也可以作為相關培訓學校和大專院校相關專業的教學用書。
圖書目錄
第 1章 iOS開發入門 1
1.1 iOS系統介紹 1
1.1.1 iOS發展史 1
1.1.2 全新的版本——iOS 10 1
1.2 開始iOS 10開發之旅 2
1.3 工欲善其事,必先利其器——搭建開發環境 4
1.3.1 Xcode 介紹 4
1.3.2 下載並安裝Xcode 8 5
1.3.3 創建iOS 10項目並啟動模擬器 6
1.3.4 打開一個現有的iOS 10項目 9
1.4 iOS 10中的常用開發框架 9
1.4.1 Foundation框架簡介 10
1.4.2 Cocoa框架簡介 11
1.4.3 iOS程式框架 12
第 2章 使用Xcode開發環境詳解 13
2.1 基本面板介紹 13
2.1.1 調試工具列 14
2.1.2 導航面板介紹 14
2.1.3 檢查器面板 17
2.2 Xcode 8的基本操作 18
2.2.1 改變公司名稱 18
2.2.2 通過搜尋框縮小檔案範圍 18
2.2.3 格式化代碼 19
2.2.4 代碼縮進和自動完成 20
2.2.5 檔案內查找和替代 20
2.2.6 快速定位到代碼行 22
2.2.7 快速打開檔案 22
2.2.8 自定義導航條 23
2.2.9 使用Xcode幫助 24
2.2.10 調試代碼 24
2.3 使用Xcode 8幫助系統 25
第3章 Objective-C語言基礎 28
3.1 **耀眼的新星 28
3.1.1 何為Objective-C 28
3.1.2 為什麼選擇Objective-C 28
3.2 Objective-C的優點及缺點 29
3.3 一個簡單的例子 29
3.3.1 使用Xcode編輯代碼 30
3.3.2 基本元素介紹 31
3.4 數據類型和常量 35
3.4.1 int類型 36
3.4.2 float類型 37
3.4.3 double類型 37
3.4.4 char類型 38
3.4.5 字元常量 39
3.4.6 id類型 40
3.4.7 限定詞 41
3.4.8 總結基本數據類型 43
3.5 字元串 43
3.6 算數表達式 44
3.6.1 運算符的優先權 44
3.6.2 整數運算和一元負號運算符 45
3.6.3 模運算符 46
3.6.4 整型值和浮點值的相互轉換 47
3.6.5 類型轉換運算符 48
3.7 表達式 48
3.7.1 常量表達式 48
3.7.2 條件運算符 49
3.7.3 sizeof運算符 49
3.7.4 關係運算符 50
3.7.5 強制類型轉換運算符 50
3.8 位運算符 51
3.8.1 按位與運算符 51
3.8.2 按位或運算符 52
3.8.3 按位異或運算符 52
3.8.4 一次求反運算符 53
3.8.5 向左移位運算符 54
3.8.6 向右移位運算符 54
3.8.7 總結Objective-C的運算符 55
第4章 Swift語言基礎 56
4.1 Swift概述 56
4.1.1 Swift的創造者 56
4.1.2 Swift的優勢 56
4.1.3 **新的Swift 3.0 58
4.2 數據類型和常量 58
4.2.1 int類型 59
4.2.2 float類型 59
4.2.3 double類型 59
4.2.4 char類型 59
4.2.5 字元常量 59
4.3 變數和常量 60
4.3.1 常量詳解 60
4.3.2 變數詳解 60
4.4 字元串和字元 61
4.4.1 字元串字面量 62
4.4.2 初始化空字元串 62
4.4.3 字元串可變性 62
4.4.4 值類型字元串 63
4.4.5 計算字元數量 63
4.4.6 連線字元串和字元 64
4.4.7 字元串插值 64
4.4.8 比較字元串 64
4.4.9 Unicode 65
4.5 流程控制 67
4.5.1 for循環(1) 68
4.5.2 for循環(2) 69
4.5.3 while循環 69
4.6 條件語句 70
4.6.1 if語句 70
4.6.2 switch語句 71
4.7 函式 72
4.7.1 函式的聲明與調用 72
4.7.2 函式的參數和返回值 73
4.8 實戰演練——使用Xcode創建Swift程式 75
第5章 Cocoa Touch框架 77
5.1 Cocoa Touch基礎 77
5.1.1 Cocoa Touch概述 77
5.1.2 Cocoa Touch中的框架 78
5.1.3 Cocoa Touch的優勢 78
5.2 iPhone的技術層 78
5.2.1 Cocoa Touch層 79
5.2.2 多媒體層 82
5.2.3 核心服務層 83
5.2.4 核心OS層 84
5.3 Cocoa Touch中的框架 84
5.3.1 Core Animation(圖形處理)框架 84
5.3.2 Core Audio(音頻處理)框架 85
5.3.3 Core Data(數據處理)框架 86
5.4 Cocoa中的類 87
5.4.1 核心類 87
5.4.2 數據類型類 88
5.4.3 UI界面類 90
5.5 國際化 91
5.6 使用Xcode學習iOS框架 92
5.6.1 使用Xcode文檔 92
5.6.2 快速幫助 93
第6章 Xcode Interface Builder界面開發 95
6.1 Interface Builder基礎 95
6.2 和Interface Builder密切相關的庫面板 97
6.3 Interface Builder採用的方法 98
6.4 Interface Builder中的故事板——Storyboarding 98
6.4.1 推出的背景 98
6.4.2 故事板的文檔大綱 99
6.4.3 文檔大綱的區域對象 100
6.5 創建一個界面 101
6.5.1 對象庫 101
6.5.2 將對象加入到視圖中 102
6.5.3 使用IB布局工具 102
6.6 定製界面外觀 105
6.6.1 使用屬性檢查器 105
6.6.2 設定輔助功能屬性 105
6.6.3 測試界面 106
6.7 iOS 10控制項的屬性 107
6.8 實戰演練——將設計界面連線到代碼(雙語實現:Objective-C版) 107
6.8.1 打開項目 107
6.8.2 輸出口和操作 108
6.8.3 創建到輸出口的連線 109
6.8.4 創建到操作的連線 110
6.9 實戰演練——將設計界面連線到代碼(雙語實現:Swift版) 111
6.10 實戰演練——純代碼實現UI設計 112
第7章 使用Xcode編寫MVC程式 115
7.1 MVC模式基礎 115
7.1.1 分析結構 115
7.1.2 MVC的特點 116
7.2 Xcode中的MVC 116
7.2.1 原理 116
7.2.2 模板就是給予MVC的 117
7.3 在Xcode中實現MVC 117
7.3.1 視圖 118
7.3.2 視圖控制器 118
7.4 數據模型 119
7.5 實戰演練——使用模板Single View Application創建MVC程式(雙語實現:Objective-C版) 120
7.5.1 創建項目 120
7.5.2 規劃變數和連線 122
7.5.3 設計界面 124
7.5.4 創建並連線輸出口和操作 125
7.5.5 實現應用程式邏輯 127
7.5.6 生成應用程式 127
7.6 實戰演練——使用模板Single View Application創建MVC程式(雙語實現:Swift版) 127
第8章 文本框和文本視圖 129
8.1 文本框(UITextField) 129
8.1.1 文本框基礎 129
8.1.2 實戰演練——控制是否顯示TextField中信息 129
8.1.3 實戰演練——實現用戶登錄框界面 131
8.1.4 實戰演練——限制輸入文本的長度 132
8.1.5 實戰演練——實現一個UITextField控制項(Swift版) 133
8.2 文本視圖(UITextView) 134
8.2.1 文本視圖基礎 134
8.2.2 實戰演練——拖動輸入的文本 135
8.2.3 實戰演練——自定義設定文字的行間距 136
8.2.4 實戰演練——自定義 UITextView 控制項的樣式 137
8.2.5 實戰演練——在指定的區域中輸入文本(Swift版) 138
8.2.6 實戰演練——通過文本提示被單擊的按鈕(雙語實現:Objective-C版) 139
8.2.7 實戰演練——在螢幕中顯示被單擊的按鈕(雙語實現:Swift版) 140
第9章 按鈕和標籤 141
9.1 標籤(UILabel) 141
9.1.1 標籤(UILabel)的屬性 141
9.1.2 實戰演練——使用UILabel顯示一段文本 141
9.1.3 實戰演練——為文字分別添加上劃線、下劃線和中劃線 143
9.1.4 實戰演練——顯示被觸摸單詞的字母 144
9.1.5 實戰演練——顯示一個指定樣式的文本(Swift版) 145
9.2 按鈕(UIButton) 146
9.2.1 按鈕基礎 146
9.2.2 實戰演練——自定義設定按鈕的圖案 147
9.2.3 實戰演練——實現了一個變換形狀動畫按鈕 149
9.3 實戰演練——聯合使用文本框、文本視圖和按鈕(雙語實現:Objective-C版) 150
9.3.1 創建項目 150
9.3.2 設計界面 151
9.3.3 創建並連線輸出口和操作 155
9.3.4 實現按鈕模板 156
9.3.5 隱藏鍵盤 158
9.3.6 實現應用程式邏輯 159
9.3.7 總結執行 160
9.4 實戰演練——聯合使用文本框、文本視圖和按鈕(雙語實現:Swift版) 160
9.5 實戰演練——自定義一個按鈕(Swift版) 161
第 10章 滑塊、步進和圖像 163
10.1 滑塊控制項(UISlider) 163
10.1.1 Slider控制項的基本屬性 163
10.1.2 實戰演練——使用素材圖片實現滑動條特效 164
10.1.3 實戰演練——實現自動顯示刻度的滑動條 165
10.1.4 實戰演練——實現各種各樣的滑塊 166
10.1.5 實戰演練——自定義實現UISlider控制項功能(Swift版) 168
10.2 步進控制項(UIStepper) 169
10.2.1 步進控制項介紹 169
10.2.2 實戰演練——自定義步進控制項的樣式 170
10.2.3 實戰演練——設定指定樣式的步進控制項 171
10.2.4 實戰演練——使用步進控制項自動增減數字(Swift版) 173
10.3 圖像視圖控制項(UIImageView) 173
10.3.1 UIImageView的常用操作 174
10.3.2 實戰演練——實現圖像的模糊效果 174
10.3.3 實戰演練——滾動瀏覽圖片 176
10.3.4 實戰演練——實現一個圖片瀏覽器 177
10.3.5 實戰演練——使用UIImageView控制項(Swift版) 179
第 11章 開關控制項和分段控制項 181
11.1 開關控制項(UISwitch) 181
11.1.1 開關控制項基礎 181
11.1.2 實戰演練——改變UISwitch的文本和顏色 181
11.1.3 實戰演練——顯示具有開關狀態的開關 182
11.1.4 實戰演練——聯合使用UISlider與UISwitch控制項 183
11.1.5 實戰演練——控制是否顯示密碼明文(Swift版) 185
11.2 分段控制項(UISegmentedControl) 186
11.2.1 分段控制項的屬性和方法 186
11.2.2 實戰演練——使用 UISegmentedControl控制項 187
11.2.3 實戰演練——添加圖示和文本 189
11.2.4 實戰演練——使用分段控制項控制背景顏色 191
11.2.5 實戰演練——使用UISegmentedControl控制項(Swift版) 192
11.3 實戰演練——聯合使用開關控制項和分段控制項(雙版實現:Objective-C版) 192
11.4 實戰演練——聯合使用開關控制項和分段控制項(雙版實現:Swift版) 194
第 12章 Web視圖控制項、可滾動視圖控制項和翻頁控制項 196
12.1 Web視圖(UIWebView) 196
12.1.1 Web視圖基礎 196
12.1.2 實戰演練——在UIWebView控制項中調用JavaScript 腳本 197
12.1.3 實戰演練——使用滑動條動態改變字型的大小 198
12.1.4 實戰演練——實現一個迷你瀏覽器工具 200
12.1.5 實戰演練——使用UIWebView控制項載入網頁(Swift版) 201
12.2 可滾動的視圖(UIScrollView) 203
12.2.1 UIScrollView的基本用法 203
12.2.2 實戰演練——使用可滾動視圖控制項 204
12.2.3 實戰演練——滑動隱藏狀態欄 207
12.2.4 實戰演練——使用UIScrollView控制項(Swift版) 208
12.3 翻頁控制項(UIPageControl) 209
12.3.1 PageControll控制項基礎 210
12.3.2 實戰演練——自定義 UIPageControl 控制項的外觀樣式 210
12.3.3 實戰演練——實現一個圖片播放器 212
12.3.4 實戰演練——實現一個圖片瀏覽程式 213
12.3.5 實戰演練——使用UIPageControl控制項設定4個界面(Swift版) 214
12.4 實戰演練——聯合使用開關、分段控制項和Web視圖控制項(雙語實現:Objective-C版) 216
12.4.1 創建項目 216
12.4.2 設計界面 217
12.4.3 創建並連線輸出口和操作 219
12.4.4 實現應用程式邏輯 221
12.4.5 調試運行 223
12.5 實戰演練——聯合使用開關、分段控制項和Web視圖控制項(雙語實現:Swift版) 223
第 13章 提醒和操作表 225
13.1 UIAlertController基礎 225
13.1.1 提醒視圖 225
13.1.2 操作表基礎 225
13.2 使用UIAlertController 225
13.2.1 一個簡單的對話框例子 226
13.2.2 “警告”樣式 227
13.2.3 文本對話框 227
13.2.4 上拉選單 229
13.2.5 釋放對話框控制器 231
13.3 實戰演練 231
13.3.1 實戰演練——實現一個自定義操作表視圖 231
13.3.2 實戰演練——分別自定義實現提醒表視圖和操作表視圖 232
13.3.3 實戰演練——自定義UIAlertController控制項的外觀 234
13.3.4 實戰演練——實現一個提醒框效果(Swift版) 236
第 14章 工具列、日期選擇器 237
14.1 工具列(UIToolbar) 237
14.1.1 工具列基礎 237
14.1.2 實戰演練——聯合使用UIToolBar和UIView 238
14.1.3 實戰演練——自定義UIToolBar控制項的顏色和樣式 240
14.1.4 實戰演練——創建一個帶有圖示按鈕的工具列 243
14.1.5 使用UIToolbar製作一個網頁瀏覽器(Swift版) 245
14.2 選擇器視圖(UIPickerView) 247
14.2.1 選擇器視圖基礎 247
14.2.2 實戰演練——實現兩個UIPickerView控制項間的數據依賴 248
14.2.3 實戰演練——自定義一個選擇器(雙語實現:Objective-C實現) 251
14.2.4 實戰演練——自定義一個選擇器(雙語實現:Swift版) 258
14.2.5 實戰演練——實現一個單列選擇器 260
14.2.6 實戰演練——實現一個“星期”選擇框 261
14.3 日期選擇控制項(UIDatePicker) 262
14.3.1 UIDatePicker基礎 263
14.3.2 實戰演練——使用UIDatePicker控制項(Swift版) 265
14.3.3 實戰演練——實現一個日期選擇器 266
14.3.4 實戰演練——使用日期選擇器自動選擇一個時間 272
第 15章 表視圖(UITable) 274
15.1 表視圖基礎 274
15.1.1 表視圖的外觀 274
15.1.2 表單元格 274
15.1.3 添加表視圖 275
15.1.4 UITableView詳解 276
15.2 實戰演練 278
15.2.1 實戰演練——自定義UITableViewCell 278
15.2.2 實戰演練——實現一個圖文樣式聯繫人列表效果 282
15.2.3 實戰演練——在表視圖中動態操作單元格(Swift版) 285
15.2.4 實戰演練——拆分表視圖(雙語實現:Objctive-C版) 287
15.2.5 實戰演練——拆分表視圖(雙語實現:Swift版) 288
第 16章 活動指示器、進度條和檢索條 290
16.1 活動指示器(UIActivityIndicatorView) 290
16.1.1 活動指示器基礎 290
16.1.2 實戰演練——自定義UIActivityIndicatorView控制項的樣式 290
16.1.3 實戰演練——自定義活動指示器的顯示樣式 293
16.1.4 實戰演練——實現不同外觀的活動指示器效果 296
16.1.5 實戰演練——使用UIActivityIndicatorView控制項(Swift版) 297
16.2 進度條(UIProgressView) 298
16.2.1 進度條基礎 298
16.2.2 實戰演練——自定義進度條的外觀樣式 298
16.2.3 實戰演練——實現多個具有動態條紋背景的進度條 299
16.2.4 實戰演練——自定義一個指定外觀樣式的進度條 302
16.2.5 實戰演練——實現自定義進度條效果(Swift版) 306
16.3 檢索條(UISearchBar) 308
16.3.1 檢索條基礎 308
16.3.2 實戰演練——在查找信息輸入關鍵字時實現自動提示功能 309
16.3.3 實戰演練——實現文字輸入的自動填充和自動提示功能 313
16.3.4 實戰演練——使用檢索控制項快速搜尋信息 314
16.3.5 實戰演練——使用UISearchBar控制項(Swift版) 316
16.3.6 實戰演練——在表視圖中實現信息檢索(雙語實現:Objective-C版) 318
16.3.7 實戰演練——在表視圖中實現信息檢索(雙語實現:Swift版) 321
第 17章 UIView詳解 323
17.1 UIView基礎 323
17.1.1 UIView的結構 323
17.1.2 視圖架構 325
17.1.3 視圖層次和子視圖管理 326
17.1.4 視圖繪製周期 326
17.1.5 UIView的常見套用 326
17.2 實戰演練 327
17.2.1 實戰演練—給任意UIView視圖四條框線加上陰影 327
17.2.2 實戰演練——給UIView加上各種圓角、框線效果 329
17.2.3 實戰演練——使用UIView控制項實現彈出式動畫表單效果 333
17.2.4 實戰演練——創建一個滾動圖片瀏覽器(Swift版) 335
17.2.5 實戰演練——創建一個產品展示列表(雙語實現:Objctive-C版) 336
17.2.6 實戰演練——創建一個產品展示列表(雙語實現:Swift版) 337
第 18章 視圖控制器 339
18.1 導航控制器(UIViewController)基礎 339
18.1.1 UIViewController的常用屬性和方法 339
18.1.2 實戰演練——實現可以移動切換的視圖效果 340
18.1.3 實戰演練——實現手動旋轉螢幕的效果 343
18.2 使用UINavigationController 344
18.2.1 UINavigationController詳解 345
18.2.2 實戰演練——實現一個界面導航條功能 346
18.2.3 實戰演練——創建主從關係的“主-子”視圖(Swift版) 349
18.2.4 實戰演練——使用導航控制器展現3個場景(雙語實現:Objective-C版) 350
18.2.5 實戰演練——使用導航控制器展現3個場景(雙語實現:Objective-C版) 354
18.3 選項卡欄控制器 354
18.3.1 選項卡欄和選項卡欄項 355
18.3.2 實戰演練——使用選項卡欄控制器構建3個場景 357
18.3.3 實戰演練——使用動態單元格定製表格行 362
18.3.4 開發一個界面選擇控制器(Swift版) 363
第 19章 實現多場景和彈出框 365
19.1 多場景故事板 365
19.1.1 多場景故事板基礎 365
19.1.2 創建多場景項目 366
19.1.3 實戰演練——實現多個視圖之間的切換 370
19.1.4 實戰演練——使用第 二個視圖來編輯第 一個視圖中的信息(雙語實現:Objective-C版) 375
19.1.5 實戰演練——使用第 二個視圖來編輯第 一個視圖中的信息(雙語實現:Swift版) 379
第 20章 UICollectionView和UIVisualEffectView控制項 381
20.1 UICollectionView控制項詳解 381
20.1.1 UICollectionView的構成 381
20.1.2 實現一個簡單的UICollectionView 382
20.1.3 自定義的UICollectionViewLayout 385
20.1.4 實戰演練——使用UICollectionView控制項實現格線效果 386
20.1.5 實戰演練——實現大小不相同的格線效果 388
20.1.6 實戰演練——實現Pinterest樣式的布局效果(Swift版) 391
20.2 UIVisualEffectView控制項詳解 393
20.2.1 UIVisualEffectView基礎 393
20.2.2 使用VisualEffectView控制項實現模糊特效 395
20.2.3 使用VisualEffectView實現Vibrancy效果 395
20.2.4 實戰演練——在螢幕中實現模糊效果 397
20.2.5 實戰演練——在螢幕中實現遮罩效果 399
20.2.6 實戰演練——編碼實現指定圖像的模糊效果(Swift版) 400
第 21章 iPad彈出框和分割視圖控制器 403
21.1 iPad彈出框控制器(UIPopoverPresentationController) 403
21.1.1 創建彈出框 403
21.1.2 創建彈出切換 403
21.1.3 實戰演練——彈出模態視圖 405
21.1.4 實戰演練——彈出模態視圖 406
21.2 探索分割視圖控制器 407
21.2.1 分割視圖控制器基礎 408
21.2.2 實戰演練——使用表視圖(雙語實現:Objective-C版) 410
21.2.3 實戰演練——使用表視圖(雙語實現:Swift版) 414
21.2.4 實戰演練——創建基於主從關係的分割視圖(Swift版本) 416
第 22章 界面旋轉、大小和全螢幕處理 417
22.1 啟用界面旋轉 417
22.1.1 界面旋轉基礎 417
22.1.2 實戰演練——實現界面自適應(Swift版) 418
22.1.3 實戰演練——設定界面實現自適應(雙語實現:Objective-C版) 419
22.1.4 實戰演練——設定界面實現自適應(雙語實現:Swift版) 420
22.2 設計可旋轉和可調整大小的界面 420
22.2.1 自動旋轉和自動調整大小 420
22.2.2 調整框架 421
22.2.3 切換視圖 421
22.2.4 實戰演練——使用Interface Builder創建可旋轉和調整大小的界面 421
22.2.5 實戰演練——在旋轉時調整控制項 424
22.2.6 實戰演練——旋轉時切換視圖 428
22.2.7 實戰演練——實現螢幕視圖的自動切換(Swift版) 430
第 23章 圖形、圖像、圖層和動畫 432
23.1 圖形處理 432
23.1.1 iOS的繪圖機制 432
23.1.2 實戰演練——在螢幕中繪製一個三角形 433
23.1.3 實戰演練——使用CoreGraphic實現繪圖操作 434
23.2 圖像處理 436
23.2.1 實戰演練——實現顏色選擇器/調色板功能 436
23.2.2 實戰演練——在螢幕中繪製一個圖像 437
23.3 圖層 438
23.3.1 視圖和圖層 438
23.3.2 實戰演練——實現圖片、文字以及翻轉效果 438
23.3.3 實戰演練——滑動展示不同的圖片 439
23.3.4 實戰演練——演示CALayers圖層的用法(Swift版) 440
23.4 實現動畫 441
23.4.1 UIImageView動畫 441
23.4.2 視圖動畫UIView 441
23.4.3 Core Animation詳解 445
23.4.4 實戰演練——實現UIView分類動畫效果 446
23.4.5 實戰演練——動畫樣式顯示電量使用情況 448
23.4.6 實戰演練——圖形圖像的人臉檢測處理(Swift版) 450
23.4.7 實戰演練——聯合使用圖像動畫、滑塊和步進控制項(雙語實現:Objective-C版) 452
23.4.8 實戰演練——聯合使用圖像動畫、滑塊和步進控制項(雙語實現:Swift版) 461
第 24章 多媒體開發 463
24.1 使用AudioToolbox框架 463
24.1.1 聲音服務基礎 463
24.1.2 實戰演練——播放指定的聲音檔案 464
24.1.3 實戰演練——播放任意位置的音頻 465
24.2 提醒和振動 465
24.2.1 播放提醒音 466
24.2.2 實戰演練——實現兩種類型的振動效果(Swift版) 466
24.2.3 實戰演練——實用iOS的提醒功能 467
24.3 AV Foundation框架 475
24.3.1 準備工作 475
24.3.2 使用AV音頻播放器 475
24.3.3 實戰演練——使用AV Foundation框架播放視頻 476
24.3.4 實戰演練——使用AVAudioPlayer播放和暫停指定的MP3播放(Swift版) 477
24.3.5 實戰演練——使用AVKit框架播放列表中的視頻 477
24.3.6 實戰演練——使用AVKit框架播放本地視頻 479
24.3.7 實戰演練——使用AVKit框架播放網路視頻 480
24.4 圖像選擇器(UIImagePickerController) 481
24.4.1 使用圖像選擇器 481
24.4.2 實戰演練——獲取照片庫的圖片 481
第 25章 分屏多任務 484
25.1 分屏多任務基礎 484
25.1.1 分屏多任務的開發環境 484
25.1.2 Slide Over和Split View基礎 485
25.1.3 畫中畫 487
25.2 實戰演練 487
25.2.1 實戰演練——使用SlideOver多任務(Swift版) 487
25.2.2 實戰演練——使用SplitView多任務(Swift版) 491
25.2.3 實戰演練——開發一個分割多視圖瀏覽器(Swift版) 496
第 26章 定位處理 499
26.1 iOS模擬器調試定位程式的方法 499
26.2 Core Location框架 500
26.2.1 Core Location基礎 500
26.2.2 使用流程 501
26.2.3 實戰演練——定位顯示當前的位置信息(Swift版) 503
26.3 獲取位置 506
26.3.1 位置管理器委託 506
26.3.2 獲取航向 507
26.3.3 實戰演練——定位當前的位置信息 508
26.4 加入地圖功能 510
26.4.1 Map Kit基礎 510
26.4.2 為地圖添加標註 511
26.4.3 實戰演練——在地圖中定位當前的位置信息(Swift版) 512
26.4.4 實戰演練——在地圖中繪製導航線路 513
26.5 實戰演練——創建一個支持定位的應用程式(雙語實現:Objective-C版) 515
26.5.1 創建項目 516
26.5.2 設計視圖 517
26.5.3 創建並連線輸出口 517
26.5.4 實現應用程式邏輯 517
26.5.5 生成應用程式 519
26.6 實戰演練——創建一個支持定位的應用程式(雙語實現:Swift版) 520
26.7 實戰演練——實現地圖定位(雙語實現:Objective-C版) 520
26.8 實戰演練——實現地圖定位(雙語實現:Swift版) 522
第 27章 讀寫應用程式數據 523
27.1 iOS應用程式和數據存儲 523
27.2 用戶默認設定 524
27.3 設定束 524
27.3.1 設定束基礎 524
27.3.2 實戰演練——通過隱式首 選項實現一個手電筒程式(雙語實現:Objective-C版) 526
27.3.3 實戰演練——通過隱式首 選項實現一個手電筒程式(雙語實現:Swift版) 529
27.4 直接訪問檔案系統 529
27.4.1 應用程式數據的存儲位置 530
27.4.2 獲取檔案路徑 530
27.4.3 讀寫數據 531
27.4.4 讀取和寫入檔案 532
27.4.5 通過plist檔案存取檔案 533
27.4.6 保存和讀取檔案 534
27.4.7 檔案共享和檔案類型 534
27.4.8 實戰演練——實現一個用戶信息收集器(雙語實現:Objective-C版) 535
27.4.9 實戰演練——實現一個用戶信息收集器(雙語實現:Swift版) 539
27.5 核心數據(Core Data) 539
27.5.1 Core Data基礎 540
27.5.2 實戰演練——使用CoreData 動態添加、刪除數據 541
27.6 網際網路數據 542
27.6.1 XML和JSON 543
27.6.2 實戰演練——使用JSON獲取網站中的照片信息 545
第 28章 觸摸、手勢識別和Force Touch 549
28.1 多點觸摸和手勢識別基礎 549
28.2 觸摸處理 550
28.2.1 觸摸事件和視圖 550
28.2.2 iOS中的手勢操作 552
28.2.3 實戰演練——觸摸的方式移動視圖 553
28.2.4 實戰演練——觸摸挪動彩色方塊(Swift版) 553
28.3 手勢處理 557
28.3.1 手勢處理基礎 557
28.3.2 實戰演練——識別手勢並移動螢幕中的方塊(Swift版) 561
28.3.3 實戰演練——實現一個手勢識別器(雙語實現:Objective-C版) 563
28.3.4 實戰演練——實現一個手勢識別器(雙語實現:Swift版) 570
28.4 全新感應功能——Force Touch(3D Touch)技術 570
28.4.1 Force Touch介紹 570
28.4.2 Force Touch APIs介紹 571
28.4.3 實戰演練——使用Force Touch 571
28.4.4 實戰演練——啟動Force Touch觸控面板 573
28.4.5 實戰演練——為應用程式添加3D Touch手勢(Swift版) 574
第 29章 和硬體之間的操作 576
29.1 加速計和陀螺儀 576
29.1.1 加速計基礎 576
29.1.2 陀螺儀 578
29.1.3 實戰演練——使用Motion感測器(Swift版) 579
29.1.4 實戰演練——檢測傾斜和旋轉(雙語實現:Objective-C版) 580
29.1.5 實戰演練——檢測傾斜和旋轉(雙語實現:Swift版) 585
29.2 訪問朝向和運動數據 586
29.2.1 兩種方法 586
29.2.2 實戰演練——檢測當前設備的朝向(雙語實現:Objective-C版) 587
29.2.3 實戰演練——檢測當前設備的朝向(雙語實現:Swift版) 589
29.3 實戰演練——感測器綜合練習(Swift版) 590
第30章 地址簿、郵件、Twitter和短訊息 599
30.1 Contacts Framework框架 599
30.1.1 Contacts框架的主要構成類 599
30.1.2 使用Contact框架 600
30.1.3 實戰演練——使用Contacts框架獲取通信錄信息 600
30.2 Message UI電子郵件 602
30.2.1 Message UI基礎 602
30.2.2 實戰演練——使用Message UI傳送郵件(Swift版) 603
30.3 使用Twitter傳送推特信息 604
30.3.1 Twitter基礎 605
30.3.2 實戰演練——開發一個Twitter客戶端(Swift版) 605
30.4 實戰演練——聯合使用地址簿、電子郵件、Twitter和地圖 607
30.4.1 創建項目 607
30.4.2 設計界面 608
30.4.3 創建並連線輸出口和操作 608
30.4.4 實現通信錄邏輯 609
30.4.5 實現地圖邏輯 609
30.4.6 實現電子郵件邏輯 610
30.4.7 實現Twitter邏輯 610
30.4.8 調試運行 610
30.5 使用iOS 10全新框架——Messages.framework框架 611
30.5.1 Messages.framework框架介紹 611
30.5.2 實戰演練——調用並使用Messages.framework框架 612
第31章 開發通用的項目程式 614
31.1 開發通用應用程式 614
31.1.1 在iOS 6中開發通用應用程式 614
31.1.2 在iOS 6+中開發通用應用程式 615
31.1.3 圖示檔案 622
31.1.4 啟動圖像 622
31.2 實戰演練——使用通用程式模板創建通用應用程式(雙語實現:Objective-C版) 623
31.2.1 創建項目 623
31.2.2 設計界面 623
31.2.3 創建並連線輸出口 624
31.2.4 實現應用程式邏輯 624
31.3 實戰演練——使用通用程式模板創建通用應用程式(雙語實現:Swift版) 625
31.4 實戰演練——使用視圖控制器 626
31.4.1 創建項目 626
31.4.2 設計界面 627
31.4.3 創建並連線輸出口 627
31.4.4 實現應用程式邏輯 627
31.4.5 生成應用程式 627
31.5 實戰演練——使用多個目標 628
31.5.1 將iPhone目標轉換為iPad目標 629
31.5.2 將iPad目標轉換為iPhone目標 629
31.6 實戰演練——創建基於“主—從”視圖的應用程式 629
31.6.1 創建項目 630
31.6.2 調整iPad界面 631
31.6.3 調整iPhone界面 632
31.6.4 實現應用程式數據源 632
31.6.5 實現主視圖控制器 634
31.6.6 實現細節視圖控制器 636
31.6.7 調試運行 637
第32章 推服務和多執行緒 638
32.1 推服務 638
32.1.1 推服務介紹 638
32.1.2 推服務的機制 639
32.1.3 iOS 10中 PushNotificationIOS遠程推送的主要方法 639
32.1.4 在iOS 10中實現遠程推送通知的步驟 640
32.1.5 實戰演練——在iOS 10中傳送3種形式的通知 643
32.2 多執行緒 646
32.2.1 多執行緒基礎 646
32.2.2 iOS中的多執行緒 648
32.2.3 執行緒的同步與鎖 652
32.2.4 執行緒的互動 653
32.3 ARC機制 653
32.3.1 ARC概述 654
32.3.2 ARC中的新規則 655
32.4 實戰演練——實現後台多執行緒處理(雙語實現:Objective-C版) 655
32.5 實戰演練——實現後台多執行緒處理(雙語實現:Swift版) 657
第33章 Touch ID詳解 658
33.1 開發Touch ID應用程式 658
33.1.1 Touch ID的官方資料 658
33.1.2 開發Touch ID應用程式的步驟 659
33.2 實戰演練——使用Touch ID認證 660
33.3 實戰演練——使用Touch ID密碼和指紋認證 661
33.4 實戰演練——Touch ID認證的綜合演練 666
第34章 使用CocoaPods依賴管理 673
34.1 使用CocoaPods基礎 673
34.2 安裝CocoaPods 674
34.2.1 基本安裝 674
34.2.2 快速安裝 674
34.3 使用CocoaPods 674
34.3.1 在自己的項目中使用CocoaPods 675
34.3.2 為自己的項目創建 podspec 檔案 677
34.3.3 生成第三方庫的幫助文檔 678
34.4 實戰演練——打開一個用CocoaPods管理的開源項目 678
第35章 使用擴展(Extension) 682
35.1 擴展(Extension)基礎 682
35.1.1 擴展的生命周期 683
35.1.2 擴展和容器套用的互動 683
35.2 實戰演練——使用Photo Editing Extension(照片擴展) 683
35.3 實戰演練——使用TodayExtension(今 日提醒擴展) 690
35.4 實戰演練——使用Action Extension翻譯英文 693
35.5 實戰演練——使用Share Extension擴展實現分享功能 696
第36章 遊戲開發 704
36.1 Sprite Kit框架基礎 704
36.1.1 Sprite Kit的優點和缺點 704
36.1.2 Sprite Kit、Cocos2D、Cocos2D-X和Unity的選擇 704
36.2 實戰演練——開發一個Sprite Kit遊戲程式 705
36.3 實戰演練——開發一個射擊遊戲(雙語實現:Objective-C版) 713
36.4 實戰演練——開發一個射擊遊戲(雙語實現:Swift版) 720
第37章 watchOS 3智慧型手錶開發 721
37.1 Apple Watch介紹 721
37.2 WatchKit開發詳解 722
37.2.1 搭建WatchKit開發環境 722
37.2.2 WatchKit架構 723
37.2.3 WatchKit布局 724
37.2.4 Glances和Notifications(快速預覽信息) 725
37.2.5 Watch App的生命周期 725
37.3 開發Apple Watch應用程式 726
37.3.1 創建Watch套用 727
37.3.2 創建Glance界面 727
37.3.3 自定義通知界面 727
37.3.4 配置Xcode項目 727
37.4 實戰演練——實現AppleWatch垂直列表界面布局 730
37.5 實戰演練——演示AppleWatch的日曆事件 732
37.6 實戰演練——在手錶中控制小球的移動 736
37.7 實戰演練——實現一個倒計 時器 737
第38章 HealthKit健康套用開發 739
38.1 HealthKit基礎 739
38.1.1 HealthKit介紹 739
38.1.2 市面中的HealthKit套用現狀 739
38.1.3 接入HealthKit的好處 740
38.2 HealthKit開發基礎 740
38.2.1 HealthKit開發要求 740
38.2.2 HealthKit開發思路 741
38.3 實戰演練——讀寫HealthKit數據信息 742
38.4 實戰演練——心率檢測(Swift版) 742
38.5 實戰演練——獲取行走的步數 745
38.6 實戰演練——獲取步數、跑步距離、體重和身高(Swift版) 746
第39章 在程式中加入Siri功能 748
39.1 Siri基礎 748
39.1.1 iOS 10中的Siri 748
39.1.2 HomeKit中的Siri指令 748
39.2 在iOS 10應用程式中使用Siri 749
39.2.1 iOS 10對生態整合與Extension開發的努力 749
39.2.2 Siri功能將以Extension擴展的形式存在 750
39.2.3 創建Intents Extension 750
39.3 實戰演練——在健身程式中使用Siri 755
39.4 實戰演練——在打車程式中使用Siri 758
第40章 開發tvOS程式 760
40.1 tvOS開發基礎 760
40.1.1 tvOS系統介紹 760
40.1.2 tvOS開發方式介紹 760
40.1.3 打開遙控器的模擬器 761
40.2 使用Custom App方式 761
40.2.1 Custom App方式介紹 761
40.2.2 實戰演練——開發一個簡單的按鈕回響程式(Swift版) 762
40.2.3 實戰演練——開發一個猜謎遊戲(Swift版) 763
40.2.4 實戰演練——在tvOS中使用表視圖(Swift版) 765
40.2.5 實戰演練——開發一個天氣預報程式(Swift版) 767
40.3 使用TVML Apps方式 769
40.3.1 使用TVML Apps方式開發 769
40.3.2 實戰演練——開發一個可回響的tvOS程式(Swift版) 779
40.3.3 實戰演練——電影播放列表(Swift版) 784
第41章 分屏多視圖播放器 787
41.1 分屏多視圖系統介紹 787
41.2 創建工程 787
41.3 分屏具體實現 788
41.3.1 實現主視圖界面 788
41.3.2 顯示某個視頻的基本信息 792
41.3.3 播放視頻 793
41.3.4 播放網頁嵌入式視頻 797
第42章 tvOS電影庫系統 799
42.1 tvOS電影庫系統介紹 799
42.2 系統介紹 799
42.3 使用Objective-C實現 802
42.4 使用Swift實現 808
42.5 系統擴展——優酷和土豆視頻 809