第1章 歡迎來到iOS 和Swift 世界 1
1.1 關於本書 1
1.2 必備條件 1
1.2.1 選擇開發者計劃 2
1.2.2 必備知識 3
1.3 iOS應用程序的特點 4
1.3.1 隻能運行一個應用 4
1.3.2 隻能使用一個窗口 4
1.3.3 有限的訪問權限 4
1.3.4 有限的響應時間 4
1.3.5 有限的屏幕尺寸 5
1.3.6 有限的係統資源 5
1.3.7 不支持垃圾迴收 6
1.3.8 一些新功能 6
1.3.9 與眾不同的交互方法 6
1.4 本書內容 6
1.5 新版增加內容 8
1.6 Swift和Xcode版本 8
1.7 準備好瞭嗎 8
第2章 創建第一個項目 9
2.1 在Xcode中創建項目 9
2.1.1 Xcode項目窗口 12
2.1.2 深入瞭解項目 18
2.2 Interface Builder簡介 19
2.2.1 文件格式 20
2.2.2 storyboard 21
2.2.3 資源庫 22
2.2.4 在視圖中添加標簽 23
2.2.5 屬性修改 27
2.3 畫龍點睛——美化iPhone 應用程序 28
2.4 啓動界麵 30
2.5 小結 31
第3章 實現基本交互 32
3.1 MVC模式 32
3.2 創建項目 33
3.3 視圖控製器 34
3.3.1 輸齣接口和操作方法 35
3.3.2 精簡視圖控製器代碼 37
3.3.3 設計用戶界麵 38
3.3.4 運行應用 47
3.3.5 布局預覽 52
3.3.6 添加字體類型 54
3.4 應用程序委托 55
3.5 小結 58
第4章 更豐富的用戶界麵 59
4.1 滿是控件的屏幕 59
4.2 動態控件、靜態控件和被動控件 61
4.3 創建應用程序 62
4.4 實現圖像視圖和文本框 62
4.4.1 添加圖像視圖 62
4.4.2 調整圖像視圖的大小 64
4.4.3 設置視圖屬性 65
4.4.4 添加文本框 67
4.4.5 添加約束 71
4.4.6 創建並關聯輸齣接口 72
4.5 關閉鍵盤 74
4.5.1 按下Done按鈕關閉鍵盤 74
4.5.2 觸摸背景關閉鍵盤 75
4.5.3 添加滑動條和標簽 76
4.5.4 添加更多約束 78
4.5.5 創建並關聯操作方法和輸齣接口 78
4.5.6 實現操作方法 78
4.6 實現開關、按鈕和分段控件 79
4.6.1 添加兩個帶標簽的開關 80
4.6.2 為開關創建並關聯輸齣接口和操作方法 81
4.6.3 實現開關的操作方法 81
4.7 美化按鈕 83
4.7.1 可拉伸圖像 83
4.7.2 控件狀態 84
4.7.3 為按鈕創建並關聯輸齣接口和操作方法 84
4.8 實現分段控件的操作方法 85
4.9 實現操作錶單和警告視圖 85
4.9.1 顯示操作錶單 86
4.9.2 顯示警告視圖 88
4.10 小結 90
第5章 自動鏇轉和自動調整大小 91
5.1 自動鏇轉機製 91
5.1.1 點、像素和Retina 顯示屏 92
5.1.2 控製鏇轉 92
5.2 選擇視圖支持的方嚮 93
5.2.1 應用級支持的方嚮 93
5.2.2 獨立控製器的鏇轉支持 94
5.3 使用約束設計界麵 95
5.3.1 覆蓋默認的約束 98
5.3.2 與屏幕等寬的標簽 99
5.4 創建自適應布局 101
5.4.1 創建Restructure應用程序 101
5.4.2 尺寸分類 105
5.4.3 尺寸分類和storyboard 106
5.4.4 創建iPhone橫屏布局 108
5.4.5 創建iPad布局 112
5.5 小結 114
第6章 多視圖應用 115
6.1 多視圖應用的常見類型 115
6.2 多視圖應用的體係結構 118
6.2.1 根控製器 119
6.2.2 內容視圖剖析 119
6.3 構建View Switcher項目 120
6.3.1 重命名視圖控製器 120
6.3.2 添加內容視圖控製器 123
6.3.3 修改SwitchingViewController實現文件 123
6.3.4 創建擁有工具欄的視圖 124
6.3.5 連接工具欄按鈕和視圖控製器 126
6.3.6 編寫根視圖控製器 127
6.3.7 實現內容視圖 130
6.3.8 轉場過程的動畫效果 133
6.4 小結 135
第7章 分頁欄與選取器 136
7.1 Pickers應用程序 136
7.2 委托和數據源 139
7.3 創建Pickers應用程序 139
7.3.1 創建視圖控製器 140
7.3.2 創建分頁欄控製器 140
7.3.3 首次運行 143
7.4 實現日期選取器 143
7.5 實現單滾輪選取器 146
7.5.1 構建視圖 146
7.5.2 將控製器實現為數據源和委托 147
7.6 實現多滾輪選取器 150
7.6.1 聲明輸齣接口和操作方法 150
7.6.2 構建視圖 150
7.6.3 實現控製器 151
7.7 滾輪內容根據環境變化 153
7.8 使用自定義選取器創建一個簡單遊戲 159
7.8.1 編寫控製器頭文件 159
7.8.2 構建視圖 159
7.8.3 實現控製器 160
7.8.4 最後的細節 163
7.9 小結 165
第8章 錶視圖簡介 166
8.1 錶視圖基礎 166
8.1.1 錶視圖和錶視圖單元 167
8.1.2 分組錶和無格式錶 167
8.2 實現一個簡單錶 168
8.2.1 設計視圖 168
8.2.2 編寫控製器 170
8.2.3 添加一個圖像 174
8.2.4 錶視圖單元樣式 175
8.2.5 設置縮進級彆 177
8.2.6 處理行的選擇 178
8.2.7 更改字體大小和行高 179
8.3 定製錶視圖單元 181
8.3.1 嚮錶視圖單元添加子視圖 181
8.3.2 創建UITableViewCell子類 182
8.3.3 從nib文件加載UITableViewCell 186
8.4 分組分區和索引分區 190
8.4.1 構建視圖 190
8.4.2 導入數據 191
8.4.3 實現控製器 191
8.4.4 添加索引 195
8.5 實現搜索欄 195
8.6 視圖調試器 202
8.7 小結 204
第9章 導航控製器和錶視圖 205
9.1 導航控製器 205
9.1.1 棧的概念 205
9.1.2 控製器棧 206
9.2 簡單的字體瀏覽器:Fonts 207
9.2.1 子控製器 207
9.2.2 Font應用的基礎框架 209
9.3 創建根視圖控製器 214
9.4 初始化storyboard 217
9.5 第一個子控製器:字體列錶視圖 218
9.5.1 設定字體列錶的storyboard 219
9.5.2 對根視圖控製器的轉場進行設置 220
9.6 創建字體尺寸視圖控製器 221
9.6.1 設計字體尺寸視圖控製器的storyboard 223
9.6.2 對字體列錶視圖控製器的轉場進行設置 223
9.7 創建字體信息視圖控製器 223
9.7.1 設計字體信息視圖控製器的storyboard 225
9.7.2 設置約束 226
9.7.3 調整字體列錶視圖控製器的轉場 227
9.7.4 我的收藏字體 227
9.8 改善錶視圖 228
9.8.1 實現輕掃刪除 228
9.8.2 實現拖動排序 230
9.9 小結 232
第10章 集閤視圖 233
10.1 創建DialogViewer項目 233
10.2 修補視圖控製器類 234
10.3 自定義單元 234
10.4 配置視圖控製器 237
10.5 內容單元 238
10.6 實現流式布局 239
10.7 分區標題視圖 241
10.8 小結 242
第11章 分割視圖和浮動窗口 243
11.1 創建分割視圖項目 245
11.1.1 在storyboard中定義結構 247
11.1.2 使用代碼定義功能 248
11.1.3 Master-Detail模闆應用程序的工作原理 253
11.2 顯示總統信息 255
11.3 創建浮動窗口 261
11.4 iPhone上的分割視圖 266
11.4.1 iPhone 6 Plus上的分割視圖 267
11.4.2 在所有iPhone上支持iPhone 6 Plus的行為 268
11.5 自定義分割視圖 271
11.6 小結 273
第12章 應用設置和用戶默認設置 274
12.1 設置捆綁包入門 274
12.2 應用:Bridge Control 275
12.2.1 創建項目 278
12.2.2 使用設置捆綁包 279
12.2.3 讀取應用中的設置 291
12.2.4 在應用中修改默認設置 294
12.2.5 注冊默認值 296
12.2.6 保證設置有效 297
12.3 切換到“設置”應用程序 299
12.4 小結 300
第13章 數據持久化基礎知識 301
13.1 應用的沙盒 301
13.1.1 獲取Documents目錄 303
13.1.2 獲取tmp目錄 304
13.2 文件保存方案 304
13.2.1 單文件持久化 304
13.2.2 多文件持久化 304
13.3 屬性列錶 304
13.3.1 屬性列錶序列化 305
13.3.2 Persistence應用的第一個版本 306
13.4 對模型對象進行歸檔 310
13.4.1 遵循NSCoding協議 310
13.4.2 實現NSCopying協議 312
13.4.3 對數據對象進行歸檔和取消歸檔 313
13.4.4 歸檔應用 314
13.5 使用iOS內嵌的SQLite3 317
13.5.1 創建或打開數據庫 317
13.5.2 綁定變量 319
13.5.3 SQLite3 應用 319
13.6 使用Core Data 324
13.6.1 實體和托管對象 326
13.6.2 Core Data應用 328
13.7 小結 335
第14章 文檔和iCloud 336
14.1 使用UIDocument管理文檔存儲 336
14.1.1 構建TinyPix 336
14.1.2 創建TinyPixDocument類 337
14.1.3 主控製器代碼 340
14.1.4 初始storyboard 346
14.1.5 創建TinyPixView類 348
14.1.6 設計storyboard 352
14.2 添加iCloud支持 356
14.2.1 創建授權文件 356
14.2.2 如何查詢 357
14.2.3 保存在哪裏 359
14.2.4 將首選項保存到iCloud 360
14.3 小結 362
第15章 Grand Central Dispatch和後颱處理 363
15.1 Grand Central Dispatch 363
15.2 SlowWorker簡介 363
15.3 綫程基礎知識 367
15.4 工作單元 367
15.5 GCD:底層隊列 368
15.5.1 傻瓜式操作 368
15.5.2 改進SlowWorker 369
15.6 後颱處理 374
15.6.1 應用生命周期 375
15.6.2 狀態更改通知 375
15.6.3 創建State Lab項目 376
15.6.4 執行狀態的變化 377
15.6.5 利用執行狀態更改 379
15.6.6 處理不活躍狀態 379
15.6.7 處理後颱狀態 382
15.7 小結 388
第16章 使用Core Graphics繪圖 389
16.1 Quartz 2D基礎概念 389
16.2 Quartz 2D繪圖方法 389
16.2.1 Quartz 2D圖形環境 389
16.2.2 坐標係統 390
16.2.3 指定顔色 391
16.2.4 在環境中繪製圖像 393
16.2.5 繪製形狀:多邊形、直綫和麯綫 393
16.2.6 Quartz 2D樣例:圖案、漸變色、虛綫圖 394
16.3 QuartzFun應用程序 395
16.3.1 構建QuartzFun應用程序 395
16.3.2 添加Quartz 2D繪製代碼 403
16.3.3 優化QuartzFun應用程序 408
16.4 小結 410
第17章 Sprite Kit遊戲框架 411
17.1 基礎入門 411
17.2 玩傢動作 420
17.2.1 嚮場景中插入玩傢 421
17.2.2 觸摸處理:玩傢移動 421
17.2.3 幾何運算 422
17.2.4 輕微擺動 423
17.3 創建敵人 424
17.4 在場景中放入敵人 425
17.5 開始射擊 426
17.5.1 定義物理類彆 426
17.5.2 創建BulletNode類 427
17.5.3 應用物理知識 428
17.5.4 在場景中添加導彈 429
17.6 利用物理引擎攻擊敵人 430
17.7 實現關卡 431
17.7.1 注意敵人 432
17.7.2 進入下一關卡 432
17.8 自定義碰撞 433
17.8.1 為SKNode添加類擴展/類彆 434
17.8.2 嚮敵人添加自定義碰撞行為 436
17.8.3 顯示玩傢正確的生命值 436
17.9 粒子係統 438
17.9.1 第一個粒子 438
17.9.2 嚮場景中加入粒子 440
17.10 遊戲結束 441
17.11 創建開始場景 443
17.12 播放音樂 445
17.13 添加力場 446
17.14 小結 449
第18章 輕點、觸摸和手勢 450
18.1 多點觸控術語 450
18.2 響應者鏈 451
18.2.1 響應事件 451
18.2.2 轉發事件:保持響應者鏈的活動狀態 452
18.3 多點觸控體係結構 452
18.4 4 個手勢通知方法 452
18.5 TouchExplorer應用 453
18.6 Swipes應用 456
18.6.1 使用觸摸事件檢測輕掃 457
18.6.2 自動手勢識彆 459
18.6.3 實現多指輕掃 460
18.7 檢測多次輕點 462
18.8 檢測捏閤和鏇轉 466
18.9 自定義手勢 469
18.9.1 CheckPlease應用 470
18.9.2 CheckPlease的觸摸方法 471
18.10 小結 473
第19章 Core Location和Map Kit 474
19.1 位置管理器 474
19.1.1 設置精度 475
19.1.2 設置距離篩選器 475
19.1.3 獲取使用定位服務的權限 475
19.1.4 啓動位置管理器 475
19.1.5 閤理使用位置管理器 476
19.2 位置管理器委托 476
19.2.1 獲取位置更新 476
19.2.2 使用CLLocation獲取緯度和經度 476
19.2.3 錯誤通知 478
19.3 開始構建Core Location 478
19.4 將移動路綫展現在地圖上 484
19.5 小結 488
第20章 陀螺儀和加速計 489
20.1 加速計物理特性 489
20.2 陀螺儀鏇轉特性 489
20.3 Core Motion和動作管理器 490
20.3.1 基於事件的動作 490
20.3.2 主動動作訪問 494
20.3.3 陀螺儀和方位結果 496
20.3.4 加速計結果 497
20.4 檢測搖動 497
20.4.1 內嵌的搖動檢測 498
20.4.2 搖動與擊碎 498
20.5 將加速計用作方嚮控製器 500
20.5.1 滾彈珠程序 501
20.5.2 實現BallView類 503
20.5.3 計算彈珠運動 506
20.6 小結 508
第21章 攝像頭和照片庫 509
21.1 圖像選取器和UIImagePickerController 509
21.2 圖像選取器控製器 509
21.3 實際測試攝像頭和照片庫 511
21.3.1 設計界麵 512
21.3.2 實現攝像頭視圖控製器 515
21.4 小結 518
第22章 應用本地化 519
22.1 本地化體係結構 519
22.2 字符串文件 520
22.2.1 字符串文件的格式 520
22.2.2 本地化的字符串函數 521
22.3 現實中的iOS本地化應用 521
22.3.1 創建LocalizeMe 522
22.3.2 測試LocalizeMe 525
22.3.3 本地化項目 525
22.3.4 本地化storyboard 527
22.3.5 創建並本地化字符串文件 529
22.4 在Xcode中預覽本地化 533
22.5 添加其他本地化 534
22.6 小結 535
附錄 Swift簡介 536
· · · · · · (
收起)