內容簡介
iOS是如今炙手可熱的移動平台,蘋果公司為其推出了強大的軟體開發工具包iOS SDK。美國Dave Mark、Jack Nutting、Jeff LaMarche編著的《iOS 5基礎教程》是一部關於iOS SDK開發的基礎教程,內容翔實、語言生動。幾位作者結合消費類設備上的常見實例,循序漸進地講解了適用於iPhone 4S、iPad 2及iPod touch開發的基本流程。新版介紹強大的iOS 5作業系統,涵蓋Xcode 4以來的新功能,其中最為引人注目的便是storyboard和iCloud,書中將以全新章節詳細介紹。《iOS 5基礎教程》所有項目均使用Xcode 4.2重新創建,讓開發者全面感受Xcode 4帶來的振奮人心的新變化。
《iOS 5基礎教程》具有較強的通用性,編程領域的各層次讀者都能通過本書快速學習iOS發,提高相關技能。
圖書目錄
第1章 歡迎來到iOS世界 1
1.1 關於本書 1
1.2 必要條件 1
1.2.1 開發者的選擇 3
1.2.2 必備知識 4
1.3 編寫iOS應用程式有何不同 5
1.3.1 只有一個應用程式正在運行 5
1.3.2 只有一個視窗 5
1.3.3 訪問受限 5
1.3.4 有限的回響時間 6
1.3.5 有限的螢幕大小 6
1.3.6 有限的系統資源 6
1.3.7 不支持垃圾收集 7
1.3.8 新功能 7
1.3.9 與眾不同的方法 7
1.4 本書內容 7
1.5 本次更新的內容 9
1.6 準備開始吧 9
第2章 創建基本項目 10
2.1 在Xcode中設定項目 10
2.1.1 Xcode工作區視窗 14
2.1.2 深入研究項目 21
2.2 Interface Builder簡介 23
2.2.1 nib檔案的構成 24
2.2.2 庫 25
2.2.3 在視圖中添加標籤 26
2.2.4 屬性修改 29
2.3 美化iPhone套用 30
2.4 小結 34
第3章 處理基本互動 35
3.1 MVC范型 35
3.2 創建項目 36
3.3 查看視圖控制器 37
3.3.1 理解輸出口和操作 38
3.3.2 清理視圖控制器 41
3.3.3 設計用戶界面 41
3.3.4 測試項目 51
3.4 理解應用程式委託 51
3.5 小結 55
第4章 更豐富的用戶界面 56
4.1 滿是控制項的螢幕 56
4.2 活動、靜態和被動控制項 58
4.3 創建應用程式 59
4.4 實現圖像視圖和文本欄位 59
4.4.1 添加圖像視圖 59
4.4.2 調整圖像視圖 61
4.4.3 設定視圖屬性 62
4.4.4 添加文本欄位 65
4.4.5 創建和連線輸出口 70
4.5 關閉鍵盤 71
4.5.1 完成輸入後關閉鍵盤 72
4.5.2 通過觸摸背景關閉鍵盤 73
4.5.3 添加滑塊和標籤 75
4.5.4 連線操作和輸出口 77
4.5.5 實現操作方法 77
4.6 實現開關、按鈕和分段控制項 78
4.6.1 添加兩個帶標籤的開關 79
4.6.2 連線開關輸出口和操作 80
4.6.3 實現開關的操作方法 80
4.6.4 添加按鈕 81
4.6.5 為按鈕創建並關聯輸出口和操作 82
4.6.6 實現分段控制項的操作方法 82
4.7 實現操作表和警報 82
4.7.1 遵從操作表委託方法 83
4.7.2 顯示操作表 83
4.8 美化按鈕 86
4.8.1 viewDidLoad方法 87
4.8.2 控制項狀態 87
4.8.3 可拉伸圖像 88
4.9 小結 88
第5章 自動旋轉和自動調整大小 89
5.1 自動旋轉機制 89
5.1.1 點、像素和Retina顯示屏 90
5.1.2 自動轉屏方法 91
5.2 使用自動調整屬性處理旋轉 91
5.2.1 配置套用支持的方向 91
5.2.2 指定旋轉支持 92
5.2.3 使用自動調整屬性設計界面 93
5.2.4 大小檢查器的自動調整屬性 94
5.2.5 設定按鈕的自動調整屬性 96
5.3 在旋轉時重構視圖 97
5.3.1 創建和連線輸出口 98
5.3.2 在旋轉時移動按鈕 99
5.4 切換視圖 100
5.4.1 設計兩個視圖 101
5.4.2 實現交換 102
5.4.3 修改輸出口集合 104
5.5 小結 104
第6章 多視圖應用程式 106
6.1 多視圖應用程式的常見類型 106
6.2 多視圖應用程式的體系結構 109
6.2.1 根控制器 110
6.2.2 內容視圖剖析 111
6.3 構建View Switcher 111
6.3.2 修改應用程式委託 114
6.3.3 修改BIDSwitchView Controller.h 116
6.3.4 添加視圖控制器 116
6.3.5 構建包含工具列的視圖 117
6.3.6 編寫根視圖控制器 119
6.3.7 實現內容視圖 123
6.3.8 製作轉換動畫 126
6.4 小結 128
第7章 標籤欄與選取器 129
7.1 Pickers應用程式 130
7.2 委託和數據源 132
7.3 建立標籤欄框架 132
7.3.1 創建檔案 133
7.3.2 添加根視圖控制器 134
7.3.3 創建TabBarController.xib 135
7.3.4 連線輸出口,然後運行 140
7.4 實現日期選取器 141
7.5 實現單組件選取器 144
7.5.1 聲明輸出口和操作 144
7.5.2 構建視圖 145
7.5.3 將控制器實現為數據源和委託 146
7.6 實現多組件選取器 149
7.6.1 聲明輸出口和操作 150
7.6.2 構建視圖 150
7.6.3 實現控制器 150
7.7 實現依賴組件 153
7.8 使用自定義選取器創建簡單遊戲 160
7.8.1 編寫控制器頭檔案 160
7.8.2 構建視圖 160
7.8.3 添加圖像資源 161
7.8.4 實現控制器 161
7.8.5 最後的細節 166
7.8.6 連結Audio Toolbox框架 170
7.9 小結 171
第8章 表視圖簡介 172
8.1 表視圖基礎 172
8.1.1 表視圖和表視圖單元 173
8.1.2 分組表和無格式表 174
8.2 實現一個簡單的表 175
8.2.1 設計視圖 175
8.2.2 編寫控制器 176
8.2.3 添加一個圖像 179
8.2.4 表視圖單元樣式 181
8.2.5 設定縮進級別 182
8.2.6 處理行的選擇 183
8.2.7 更改字型大小和行高 185
8.3 定製表視圖單元 186
8.3.1 向表視圖單元添加子視圖 186
8.3.2 創建UITableViewCell子類 187
8.3.3 從nib檔案載入UITableViewCell 192
8.4 分組分區和索引分區 197
8.4.1 構建視圖 197
8.4.2 導入數據 197
8.4.3 實現控制器 198
8.4.4 添加索引 201
8.5 實現搜尋欄 202
8.5.1 重新考慮設計 203
8.5.2 深層可變副本 203
8.5.3 更新控制器頭檔案 205
8.5.4 修改視圖 206
8.5.5 修改控制器實現 210
8.6 小結 221
第9章 導航控制器和表視圖 222
9.1 導航控制器 222
9.1.1 棧的性質 222
9.1.2 控制器棧 223
9.2 由6個部分組成的分層應用程式:Nav 224
9.2.1 子控制器 225
9.2.2 Nav應用程式的骨架 228
9.2.3 向項目中添加圖形 234
9.2.4 第一個子控制器:展示按鈕視圖 235
9.2.5 第二個子控制器:校驗表 242
9.2.6 第三個子控制器:表行上的控制項 246
9.2.7 第四個子控制器:可移動的行 252
9.2.8 第五個子控制器:可刪除的行 257
9.2.9 第六個子控制器:可編輯的詳細窗格 262
9.2.10 其他內容 280
9.3 小結 282
第10章 storyboard 284
10.1 創建一個簡單的storyboard 285
10.2 動態原型單元 287
10.2.1 使用storyboard的動態表內容 288
10.2.2 編輯原型單元 289
10.2.3 實現表視圖數據源 290
10.2.4 它會載入嗎 292
10.3 靜態單元 293
10.3.1 實現靜態單元 293
10.3.2 實現表視圖數據源 294
10.4 大話segue 296
10.4.1 創建segue導航 296
10.4.2 設計storyboard 297
10.4.3 第一個segue 299
10.4.4 更為實用的任務列表 299
10.4.5 查看任務詳情 300
10.4.6 設定更多segue 301
10.4.7 從列表中傳遞任務 301
10.4.8 處理任務細節 303
10.4.9 回傳詳細信息 304
10.4.10 讓列表獲取詳細信息 305
10.4.11 小結 306
第11章 iPad開發注意事項 307
11.1 分割視圖和浮動視窗 307
11.1.1 創建SplitView項目 309
11.1.2 在storyboard中定義結構 310
11.1.3 代碼定義功能 311
11.2 顯示總統信息 318
11.3 創建浮動視窗 324
11.4 小結 329
第12章 應用程式設定和用戶默認設定 330
12.1 設定束 330
12.2 AppSettings應用程式 331
12.2.1 創建項目 333
12.2.2 使用設定束 334
12.2.3 讀取應用程式中的設定 346
12.2.4 註冊默認值 350
12.2.5 更改應用程式中的默認設定 351
12.2.6 實現逼真效果 354
12.3 小結 357
第13章 保存數據 358
13.1 應用程式的沙盒 358
13.1.1 獲取Documents目錄 360
13.1.2 獲取tmp目錄 360
13.2 檔案保存策略 361
13.2.1 單個檔案持久性 361
13.2.2 多個檔案持久性 361
13.3 屬性列表 361
13.3.1 屬性列表序列化 362
13.3.2 持久性應用程式的第一個版本 363
13.4 對模型對象進行歸檔 368
13.4.1 符合NSCoding 368
13.4.2 實現NSCopying 369
13.4.3 對數據對象進行歸檔和取消歸檔 370
13.4.4 歸檔應用程式 371
13.5 使用iOS的嵌入式SQLite3 374
13.5.1 創建或打開資料庫 375
13.5.2 綁定變數 376
13.5.3 SQLite3應用程式 377
13.6 使用Core Data 383
13.6.1 實體和託管對象 385
13.6.2 Core Data應用程式 388
13.7 小結 398
第14章 iCloud之旅 399
14.1 使用UIDocument管理文檔存儲 399
14.1.1 構建TinyPix 400
14.1.2 創建BIDTinyPixDocument 401
14.1.3 主代碼 404
14.1.4 初始化storyboard 410
14.1.5 創建BIDTinyPixView 412
14.1.6 storyboard設計 416
14.2 添加iCloud支持 419
14.2.1 創建provisioning profile 420
14.2.2 啟用iCloud授權 420
14.2.3 如何查詢 421
14.2.4 保存在哪裡 423
14.2.5 在iCloud上存儲首選項 423
14.3 小結 424
第15章 Grand Central Dispatch、後台處理及其套用 426
15.1 Grand Central Dispatch 426
15.2 SlowWorker簡介 427
15.3 執行緒基礎知識 430
15.4 工作單元 430
15.5 GCD:低級佇列 431
15.5.1 傻瓜式操作 431
15.5.2 改進SlowWorker 432
15.6 後台處理 438
15.6.1 應用程式生命周期 439
15.6.2 狀態更改通知 439
15.6.3 創建State Lab 441
15.6.4 執行狀態 442
15.6.5 利用執行狀態更改 444
15.6.6 處理不活動狀態 444
15.6.7 處理後台狀態 449
15.7 小結 457
第16章 使用Quartz和OpenGL繪圖 458
16.1 圖形世界的兩個視圖 458
16.2 Quart 2D繪圖方法 459
16.2.1 Quartz 2D的圖形上下文 459
16.2.2 坐標系 460
16.2.3 指定顏色 461
16.2.4 在上下文中繪製圖像 463
16.2.5 繪製形狀:多邊形、直線和曲線 463
16.2.6 Quartz 2D工具採樣器:模式、梯度、虛線模式 464
16.3 QuartzFun應用程式 465
16.3.1 構建QuartzFun應用程式 465
16.3.2 添加Quartz Drawing代碼 474
16.3.3 最佳化QuartzFun應用程式 478
16.4 GLFun應用程式 481
16.4.1 構建GLFun應用程式 482
16.4.2 創建BIDGLFunView 482
16.4.3 更新BIDViewController 489
16.4.4 更新nib 490
16.4.5 完成GLFun 490
16.5 小結 490
第17章 輕擊、觸摸和手勢 491
17.1 多點觸控術語 491
17.2 回響者鏈 492
17.2.1 回響事件 492
17.2.2 轉發事件:保持回響者鏈的活動狀態 493
17.3 多點觸控體系結構 494
17.4 4個手勢通知方法 494
17.5 檢測觸摸 495
17.6 檢測輕掃 498
17.6.1 使用自動手勢識別 502
17.6.2 實現多個輕掃動作 503
17.7 檢測多次輕擊 505
17.8 檢測捏合操作 509
17.9 創建和使用自定義手勢 512
17.9.1 CheckPlease應用程式 512
17.9.2 CheckPlease觸摸方法 514
17.10 小結 516
第18章 Core Location定位功能 517
18.1 位置管理器 517
18.1.1 設定所需的精度 518
18.1.2 設定距離篩選器 518
18.1.3 啟動位置管理器 519
18.1.4 更明智地使用位置管理器 519
18.2 位置管理器委託 519
18.2.1 獲取位置更新 519
18.2.2 使用CLLocation獲取緯度和經度 519
18.2.3 錯誤通知 521
18.3 嘗試使用Core Location 522
18.3.1 更新位置管理器 525
18.3.2 確定移動距離 526
18.4 小結 527
第19章 陀螺儀和加速計 528
19.1 加速計物理學 528
19.2 不要忘記旋轉 529
19.3 Core Motion和動作管理器 529
19.3.1 基於事件的動作 530
19.3.2 主動動作訪問 535
19.3.3 加速計結果 537
19.4 檢測搖動 537
19.4.1 Baked-In搖動 538
19.4.2 搖動與擊碎 539
19.5 將加速計用做方向控制器 544
19.5.1 滾彈珠程式 545
19.5.2 編寫Ball View 547
19.5.3 計算小球運動 549
19.6 小結 552
第20章 iPhone照相機和照片庫 553
20.1 使用圖像選取器和UIImagePickerController 553
20.2 實現圖像選取器控制器委託 555
20.3 實際測試照相機和庫 556
20.3.1 設計界面 557
20.3.2 實現照相機視圖控制器 558
20.4 小結 562
第21章 應用程式本地化 563
21.1 本地化體系結構 563
21.2 字元串檔案 564
21.2.1 字元串檔案裡面是什麼 565
21.2.2 本地化的字元串宏 565
21.3 現實中的iOS:本地化應用程式 566
21.3.1 創建LocalizeMe 567
21.3.2 測試LocalizeMe 569
21.3.3 本地化nib檔案 570
21.3.4 本地化圖像 573
21.3.5 生成和本地化字元串檔案 575
21.3.6 本地化應用程式顯示名稱 577
21.4 小結 578
第22章 未來之路 579
22.1 蘋果公司的文檔 579
22.2 郵件列表 579
22.3 論壇 580
22.4 網站 580
22.5 部落格 581
22.6 會議 582
22.7 作者 582
22.8 再會 583
作者簡介
Dave Mark 經驗豐富的Mac技術開發專家,作家。他撰寫過許多Mac平台和iOS開發方面的暢銷書,比如《iPad開發基礎教程》(中文版已由人民郵電出版社出版)。iOS/Android開發公司MartianCraft創始人。
Jack Nutting 資深蘋果移動開發技術專家,作家。Objective-C和Cocoa框架的堅定擁護者。《iPad開發基礎教程》合著者。
Jeff LaMarche 資深Mac與iPhone開發人員,擁有20多年開發經驗。他是MacTech Magazine和蘋果公司開發人員網站的專欄作家。Jeff關於iOS開發的博文廣受歡迎。