內容簡介
《iOS套用開發從入門到精通》共30章,循序漸進地講解了iOS系統開發的基本知識。本書從搭建開發環境講起,依次講解了下載並安裝Xcode開發工具、Objective-C語言基礎、基本控制項、數據存儲、多場景處理、界面旋轉、圖形圖像、動畫處理、聲音服務、多媒體技術、定位處理、網際網路套用、觸摸手勢、硬體操作、信箱、地址簿等。《iOS套用開發從入門到精通》幾乎涵蓋了iOS開發的全部內容,無論是iPhone套用開發還是iPad套用開發者,都可以從本書中獲得有幫助的知識。全書內容言簡意賅,講解上通俗易懂,特別適合於初學者學習。
《iOS套用開發從入門到精通》適合iOS初學者、iOS愛好者、iPhone開發人員、iPad開發人員和軟體開發人員學習,也可以作為培訓學校和大專院校相關專業的教學用書。
圖書目錄
第 一部分 必備技術篇
第 1章 iOS開發入門 2
1.1 iOS系統介紹 2
1.2 讓世界瘋狂的iPhone 4
1.3 加入iOS開發團隊 4
1.4 搭建開發環境 6
1.4.1 Xcode介紹 7
1.4.2 iOS SDK介紹 7
1.4.3 下載並安裝Xcode 8
1.5 使用Xcode開發環境 10
1.5.1 使用Xcode創建程式的基本步驟 10
1.5.2 Xcode的基本功能 11
1.6 啟動模擬器 18
1.7 iOS的常用開發框架 20
1.7.1 Foundation框架簡介 20
1.7.2 Cocoa框架簡介 22
1.8 常用的第三方工具 22
1.8.1 iPhone Simulator 23
1.8.2 Interface Builder 23
第 2章 Objective-C語言基礎 25
2.1 最耀眼的新星 25
2.1.1 看一份統計數據 25
2.1.2 究竟何為Objective-C 26
2.1.3 為什麼選擇Objective-C 26
2.2 Objective-C的優點及缺點 27
2.3 一個簡單的例子 27
2.3.1 使用Xcode編輯代碼 28
2.3.2 基本元素介紹 29
2.4 數據類型和常量 33
2.4.1 int類型 34
2.4.2 float類型 35
2.4.3 double類型 35
2.4.4 char類型 36
2.4.5 字元常量 37
2.4.6 id類型 38
2.4.7 限定詞 40
2.4.8 總結基本數據類型 41
2.5 字元串 42
2.6 算數表達式 42
2.6.1 運算符的優先權 42
2.6.2 整數運算和一元負號運算符 44
2.6.3 模運算符 45
2.6.4 整型值和浮點值的相互轉換 46
2.6.5 類型轉換運算符 46
2.7 表達式 47
2.7.1 常量表達式 47
2.7.3 sizeof運算符 48
2.8 位運算符 50
2.8.1 按位與運算符 50
2.8.2 按位或運算符 51
2.8.3 按位異或運算符 52
2.8.4 一次求反運算符 52
2.8.6 向右移位運算符 53
2.8.7 總結Objective-C的運算符 54
第3章 Cocoa Touch 56
3.1 Cocoa Touch基礎 56
3.1.1 Cocoa Touch概述 56
3.1.2 Cocoa Touch中的框架 57
3.1.3 Cocoa Touch的優勢 57
3.2 iPhone的技術層 58
3.2.1 Cocoa Touch 層 58
3.2.2 多媒體層 62
3.2.3 核心服務層 63
3.2.4 核心OS層 64
3.3 Cocoa Touch中的框架 64
3.3.1 Core Animation(圖形處理)框架 65
3.3.2 Core Audio(音頻處理)框架 65
3.3.3 Core Data(數據處理)框架 66
3.4 iOS程式的生命周期 67
3.4.1 從一段代碼看iOS程式的生命周期 67
3.4.2 iOS程式生命周期的原理 68
3.4.3 UIViewController的生命周期 70
3.5 Cocoa中的類 72
3.5.1 核心類 72
3.5.2 數據類型類 75
3.5.3 UI界面類 78
3.6 國際化 81
3.7 使用Xcode學習iOS框架 82
3.7.1 使用Xcode文檔 82
3.7.2 快速幫助 83
第4章 Xcode Interface Builder界面開發 85
4.1 Interface Builder基礎 85
4.1.1 Interface Builder的作用 85
4.1.2 Interface Builder的新特色 85
4.2 Interface Builder採用的方法 87
4.3 Interface Builder的故事板 87
4.3.1 推出的背景 87
4.3.2 故事板的文檔大綱 88
4.3.3 文檔大綱的區域對象 89
4.4 創建一個界面 90
4.4.1 對象庫 90
4.4.2 將對象加入到視圖中 91
4.4.3 使用IB布局工具 91
4.5 定製界面外觀 94
4.5.1 使用屬性檢查器 94
4.5.2 設定輔助功能屬性 94
4.5.3 測試界面 95
4.6 將界面連線到代碼 96
4.6.1 打開項目 96
4.6.2 輸出口和操作 97
4.6.3 創建到輸出口的連線 97
4.6.4 創建到操作的連線 99
第5章 使用Xcode編寫MVC程式 101
5.1.1 誕生背景 101
5.1.2 分析結構 101
5.1.3 MVC的特點 102
5.1.4 使用MVC實現程式設計的結構化 102
5.2 Xcode中的MVC 103
5.2.1 原理 103
5.2.2 模板就是給予MVC的 104
5.3 在Xcode中實現MVC 104
5.3.1 視圖 104
5.3.2 視圖控制器 105
5.4 數據模型 106
5.5 使用模板Single View Application 107
5.5.1 創建項目 107
5.5.2 規劃變數和連線 111
5.5.3 設計界面 113
5.5.4 創建並連線輸出口和操作 114
5.5.5 實現應用程式邏輯 117
5.5.6 生成應用程式 118
第 二部分 控制項實戰篇
第6章 文本框和文本視圖 120
6.1 文本框(UITextField) 120
6.1.1 文本框基礎 120
6.1.2 實戰演練——在螢幕中顯示一個文本輸入框 120
6.1.3 實戰演練——設定文本輸入框的框線線樣式 121
6.1.4 實戰演練——設定文本輸入框的字型和顏色 122
6.1.5 實戰演練——在文本輸入框中設定一個清空按鈕 122
6.1.6 實戰演練——為文本輸入框設定背景圖片 123
6.2 文本視圖(UITextView) 124
6.2.1 文本視圖基礎 124
6.2.2 實戰演練——在螢幕中換行顯示文本 125
6.2.3 實戰演練——在螢幕中顯示可編輯的文本 126
6.2.4 實戰演練——設定螢幕中文本的對齊方式 128
第7章 按鈕和標籤 130
7.1 標籤(UILabel) 130
7.1.1 標籤的屬性 130
7.1.2 實戰演練——使用標籤顯示一段文本 130
7.1.3 實戰演練——在螢幕中顯示指定字型和指定大小的文本 133
7.1.4 實戰演練——設定螢幕中文本的對齊方式 133
7.2 按鈕(UIButton) 134
7.2.1 按鈕基礎 134
7.2.2 實戰演練——按下按鈕後觸發一個事件 135
7.2.3 實戰演練——在螢幕中顯示不同的按鈕 136
7.3 聯合使用文本框、文本視圖和按鈕 137
7.3.1 創建項目 137
7.3.2 設計界面 138
7.3.3 創建並連線輸出口和操作 143
7.3.4 實現按鈕模板 144
7.3.5 隱藏鍵盤 146
7.3.6 實現應用程式邏輯 148
7.3.7 總結執行 148
第8章 滑塊、步進和圖像 151
8.1 滑塊控制項(UISlider) 151
8.1.1 使用Slider 控制項的基本方法 151
8.1.2 實戰演練——滑動滑塊時顯示對應的值 152
8.1.3 實戰演練——滑動滑塊控制文字的大小 153
8.1.4 實戰演練——實現各種各樣的滑塊 154
8.2 步進控制項(UIStepper) 160
8.3 圖像視圖控制項(UIImageView) 161
8.3.1 UIImageView的常用操作 161
8.3.2 實戰演練——在螢幕中顯示圖像 164
8.3.3 實戰演練——在螢幕中繪製一幅圖像 165
8.3.4 實戰演練——在螢幕中繪圖時設定透明度 166
第9章 使用開關控制項和分段控制項 168
9.1 開關控制項(UISwitch) 168
9.1.1 開關控制項基礎 168
9.1.2 實戰演練——改變UISwitch的文本和顏色 168
9.1.3 實戰演練——顯示具有開關狀態的開關 170
9.1.4 實戰演練——聯合使用UISlider與UISwitch控制項 172
9.2 分段控制項 173
9.2.1 分段控制項的屬性和方法 173
9.2.2 實戰演練——使用 UISegmentedControl控制項 175
9.2.3 實戰演練——選擇一個分段卡後可以改變螢幕的背景顏色 177
9.2.4 實戰演練——設定分段卡的顯示樣式 178
9.2.5 實戰演練——設定不顯示分段卡的選擇狀態 178
9.2.6 實戰演練——改變分段卡的顯示顏色 179
9.2.7 實戰演練——選擇某個選項時在此分段卡中顯示一幅圖片 180
第 10章 Web視圖控制項和可滾動視圖控制項 181
10.1 Web視圖(UIWebView) 181
10.1.1 Web視圖基礎 181
10.1.2 實戰演練——在螢幕中顯示指定的網頁 182
10.1.3 實戰演練——控制螢幕中的網頁 183
10.1.4 實戰演練——在網頁中載入顯示PDF、Word和 JPEG圖片 185
10.1.5 實戰演練——在網頁中載入HTML代碼 186
10.1.6 實戰演練——在網頁中實現觸摸處理 187
10.2 可滾動的視圖(UIScrollView) 190
10.2.1 UIScrollView的基本用法 190
10.2.2 實戰演練——使用可滾動視圖控制項 194
10.3 聯合使用開關、分段控制項和Web視圖控制項 197
10.3.1 創建項目 197
10.3.2 設計界面 198
10.3.3 創建並連線輸出口和操作 201
10.3.4 實現應用程式邏輯 202
10.3.5 生成應用程式 205
第 11章 提醒和操作表 206
11.1 提醒視圖(UIAlertView) 206
11.1.1 UIAlertView基礎 206
11.1.2 不同的提醒效果 209
11.1.3 實戰演練——實現一個自定義提醒對話框 210
11.2 操作表(UIActionSheet) 212
11.2.1 操作表的基本用法 212
11.2.2 回響操作表 213
11.2.3 使用UIActionSheet的流程 214
第 12章 工具列、日期選擇器 217
12.1 工具列(UIToolbar) 217
12.1.1 工具列基礎 217
12.1.2 修改UIToolBar的背景顏色 218
12.1.3 實戰演練——聯合使用UIToolBar和UIView 219
12.1.4 實戰演練——實現一個播放、暫停按鈕 221
12.2 選擇器視圖(UIPickerView) 223
12.2.1 選擇器視圖基礎 223
12.2.2 實戰演練——實現兩個UIPickerView控制項間的數據依賴 225
12.2.3 實戰演練——自定義一個選擇器 228
12.3 日期選擇(UIDatePicker) 236
12.3.1 UIDatePicker基礎 236
12.3.2 實戰演練——使用 UIDatePicker 238
12.3.3 實戰演練——實現一個日期選擇器 240
第 13章 表視圖(UITable) 248
13.1 表視圖基礎 248
13.1.1 表視圖的外觀 248
13.1.2 表單元格 248
13.1.3 添加表視圖 249
13.1.4 UITableView詳解 252
13.2 實戰演練 254
13.2.1 實戰演練——拆分表視圖 255
13.2.2 實戰演練——列表顯示18條數據 257
13.2.3 實戰演練——分段顯示列表中的數據 258
13.2.4 實戰演練——刪除單元格 259
13.2.5 實戰演練——自定義UITableViewCell 261
第 14章 活動指示器、進度條和檢索條 265
14.1 活動指示器(UIActivityIndicatorView) 265
14.1.1 活動指示器基礎 265
14.1.2 實戰演練——實現一個播放器的活動指示器 265
14.2 進度條(UIProgressView) 267
14.2.1 進度條基礎 268
14.2.2 實戰演練——實現一個藍色進度條效果 268
14.2.3 實戰演練——在進度條中顯示進度百分比 269
14.3 檢索條(UISearchBar) 270
14.3.1 檢索條基礎 270
14.3.2 實戰演練——在螢幕中實現一個檢索框效果 271
14.3.3 實戰演練——實現一個實時顯示檢索框效果 272
14.3.4 實戰演練——設定檢索框的背景顏色 273
14.3.5 實戰演練——在檢索框中添加一個書籤按鈕 274
14.3.6 實戰演練——在檢索框中添加一個範圍條 275
第 15章 UIView詳解 277
15.1 UIView基礎 277
15.1.1 UIView的結構 277
15.1.2 視圖架構 279
15.1.3 視圖層次和子視圖管理 280
15.1.4 視圖繪製周期 280
15.2 實戰演練——設定UIView的位置和尺寸 281
15.3 實戰演練——隱藏指定的UIView區域 282
15.4 實戰演練——改變背景顏色 283
15.5 實戰演練——實現背景透明 285
15.6 實戰演練——定位螢幕中的圖片 286
15.7 實戰演練——旋轉和縮放視圖 288
第 16章 視圖控制器 291
16.1 視圖控制器(UIViewController)簡介 291
16.1.1 UIViewController基礎 291
16.1.2 實戰演練——實現不同界面之間的跳轉處理 292
16.2 導航控制器(UINavigationController) 293
16.2.1 導航欄、導航項和欄按鈕項 294
16.2.2 UINavigationController詳解 294
16.2.3 在故事板中使用導航控制器 297
16.2.4 導航控制器UINavigationController的流程 299
16.2.5 實戰演練——實現不同視圖的切換 300
16.2.6 實戰演練——通過列表實現不同界面之間的跳轉 302
16.2.7 實戰演練——使用導航控制器展現三個場景 304
16.3 選項卡欄控制器(UITabBarController)簡介 308
16.3.1 選項卡欄和選項卡欄項 309
16.3.2 在選項卡欄控制器管理的場景之間共享數據 311
16.3.3 UITabBarController使用詳解 311
16.3.4 實戰演練——實現不同場景的切換 314
16.3.5 實戰演練——使用選項卡欄控制器構建3個場景 317
第三部分 核心套用篇
第 17章 實現多場景和彈出框 324
17.1 多場景故事板 324
17.1.1 多場景故事板基礎 324
17.1.2 創建多場景項目 325
17.1.3 實戰演練——使用第 二個視圖來編輯第 一個視圖中的信息 328
17.1.4 實戰演練——實現多個視圖之間的切換 332
第 18章 iPad彈出框和分割視圖控制器 337
18.1 iPad彈出框 337
18.1.1 創建彈出框 337
18.1.2 創建彈出切換 337
18.1.3 手工顯示彈出框 339
18.1.4 回響用戶關閉彈出框 339
18.1.5 以編程方式創建並顯示彈出框 341
18.1.6 實戰演練——使用彈出框更新內容 342
18.2 探索分割視圖控制器 344
18.2.1 分割視圖控制器基礎 345
18.2.2 表視圖實戰演練 347
第 19章 界面旋轉、大小和全螢幕處理 352
19.1 啟用界面旋轉 352
19.2 設計可旋轉和調整大小的界面 353
19.2.1 自動旋轉和自動調整大小 353
19.2.2 調整框架 353
19.2.3 切換視圖 353
19.2.4 實戰演練——使用Interface Builder創建可旋轉和調整大小的界面 353
19.2.5 實戰演練——在旋轉時調整控制項 356
19.2.6 實戰演練——旋轉時切換視圖 360
第 20章 圖形、圖像、圖層和動畫 363
20.1 圖形處理 363
20.1.1 iOS的繪圖機制 363
20.1.2 實戰演練——在螢幕中繪製一個三角形 364
20.2 圖像處理 366
20.2.1 實戰演練——實現顏色選擇器/調色板功能 367
20.2.2 實戰演練——實現滑動顏色選擇器/調色板功能 368
20.3 圖層 370
20.3.1 視圖和圖層 371
20.3.2 實戰演練——在螢幕中實現3個重疊的矩形 371
20.3.3 實戰演練——實現圖層的變換 372
20.3.4 實戰演練——在指南針上實現某種“頁面翻轉”的效果 375
20.4 實現動畫 378
20.4.1 UIImageView動畫 378
20.4.2 視圖動畫UIView 378
20.4.3 Core Animation詳解 382
20.4.4 實戰演練——聯合使用圖像動畫、滑塊和步進控制項 386
20.4.5 實戰演練——實現“煙花煙花滿天飛”效果 398
第 21章 聲音服務 400
21.1 訪問聲音服務 400
21.1.1 聲音服務基礎 400
21.1.2 實戰演練——播放聲音檔案 401
21.2 提醒和振動 405
21.2.1 播放提醒音 405
21.2.2 實戰演練——實用iOS的提醒功能 405
第 22章 多媒體套用 414
22.1 Media Player框架 414
22.1.1 Media Player框架中的類 414
22.1.2 使用電影播放器 415
22.1.3 處理播放結束 416
22.1.4 使用多媒體選擇器 416
22.1.5 使用音樂播放器 417
22.1.6 實戰演練——使用Media Player播放視頻 418
22.2 AV Foundation框架 420
22.2.1 準備工作 420
22.2.2 使用AV音頻播放器 421
22.2.3 使用AV錄音機 421
22.2.4 使用AV Foundation框架播放音頻的流程 422
22.3 圖像選擇器(UIImagePickerController) 423
22.3.1 使用圖像選擇器 424
22.3.2 圖像選擇器控制器委託 424
22.3.3 UIImagePickerController在iPhone和iPad上的區別 425
22.3.4 用UIImagePickerController調用系統照相機 426
22.3.5 防止UIImagePickerController“壞死” 426
22.4 一個多媒體的應用程式 427
22.4.1 實現概述 427
22.4.2 創建項目 427
22.4.3 設計界面 428
22.4.4 創建並連線輸出口和操作 429
22.4.5 實現電影播放器 429
22.4.6 實現音頻錄製和播放 431
22.4.7 使用照片庫和相機 435
22.4.8 實現Core Image濾鏡 436
22.4.9 訪問並播放音樂庫 437
第 23章 定位處理 441
23.1 Core Location框架 441
23.1.1 Core Location基礎 441
23.1.2 使用流程 441
23.2 獲取位置 444
23.2.1 位置管理器委託 444
23.2.2 處理定位錯誤 445
23.2.3 位置精度和更新過濾器 446
23.2.4 獲取航向 446
23.3 地圖功能 447
23.3.1 Map Kit基礎 447
23.3.2 為地圖添加標註 448
23.4 實戰演練——創建一個支持定位的應用程式 449
23.4.1 創建項目 450
23.4.2 設計視圖 451
23.4.3 創建並連線輸出口 451
23.4.4 實現應用程式邏輯 452
23.4.5 生成應用程式 453
23.5 實戰演練——在螢幕中實現一個定位系統 454
23.5.1 設計界面 454
23.5.2 具體編碼 455
23.6 實戰演練——使用谷歌地圖 457
23.6.1 添加打開地圖功能 458
23.6.2 升級視圖控制器 459
23.6.3 添加自定義地圖示注對象 461
第 24章 和網際網路接軌 463
24.1 UIWebView控制項 463
24.1.1 UIWebView基礎 463
24.1.2 實戰演練——顯示指定的網頁 464
24.1.3 實戰演練——控制螢幕中的網頁 465
24.1.4 實戰演練——載入顯示PDF、Word和JPEG圖片 466
24.1.5 實戰演練——在網頁中載入HTML代碼 468
24.1.6 實戰演練——在網頁中實現觸摸處理 468
24.2 實現一個簡單的網頁瀏覽器 471
第四部分 提高篇
第 25章 讀寫應用程式數據 476
25.1 iOS應用程式和數據存儲 476
25.2 用戶默認設定 477
25.3 設定束 478
25.3.1 設定束基礎 478
25.3.2 實戰演練——通過隱式首選項實現一個手電筒程式 479
25.4.1 應用程式數據的存儲位置 483
25.4.2 獲取檔案路徑 483
25.4.3 讀寫數據 484
25.4.4 讀取和寫入檔案 484
25.4.5 通過plist檔案存取檔案 486
25.4.6 保存和讀取檔案 487
25.4.7 檔案共享和檔案類型 488
25.4.8 傳遞一個文檔 488
25.4.9 實戰演練——實現一個收集用戶信息的程式 489
25.5 iCloud存儲 492
25.6 使用SQLite3存儲和讀取數據 493
25.7 核心數據 497
25.7.1 Core Data基礎 497
25.7.2 Core Data基本架構 499
25.7.3 託管對象(Managed Objects)和託管對象模型(Managed Object Model) 501
25.7.4 實戰演練——在iOS中使用CoreData 502
25.8 網際網路數據 505
25.8.1 XML和JSON 505
25.8.2 實戰演練——使用JSON獲取網站中的照片信息 507
第 26章 觸摸和手勢識別 511
26.1 多點觸摸和手勢識別基礎 511
26.2 觸摸處理 512
26.2.1 觸摸事件和視圖 512
26.2.2 實戰演練——觸控螢幕幕中的按鈕 517
26.2.3 實戰演練——同時滑動螢幕中的兩個滑塊 518
26.2.4 實戰演練——觸控螢幕幕檢測 519
26.2.5 實戰演練——觸控螢幕幕中的文字標籤 520
26.3 手勢處理 521
26.3.1 手勢處理基礎 521
26.3.2 實戰演練——實現一個手勢識別器 527
第 27章 和硬體之間的操作 534
27.1 加速計和陀螺儀 534
27.1.1 加速計基礎 534
27.1.2 陀螺儀 538
27.1.3 實戰演練——檢測傾斜和旋轉 539
27.2 訪問朝向和運動數據 544
27.2.1 兩種方法 544
27.2.2 實戰演練——檢測朝向演練 545
第 28章 地址簿、郵件和Twitter 548
28.1 地址簿 548
28.1.1 框架Address Book UI 548
28.1.2 框架Address Book 550
28.2 電子郵件 550
28.3 使用Twitter傳送推特信息 551
28.4 實戰演練——聯合使用地址簿、電子郵件、Twitter和地圖 552
28.4.1 創建項目 552
28.4.2 設計界面 553
28.4.3 創建並連線輸出口和操作 553
28.4.4 實現地址簿邏輯 554
28.4.5 實現地圖邏輯 556
28.4.6 實現電子郵件邏輯 558
28.4.7 實現Twitter邏輯 559
28.4.8 生成應用程式 559
第 29章 開發通用的應用程式 560
29.1 通用應用程式 560
29.1.1 圖示檔案 561
29.1.2 啟動圖像 562
29.2 實戰演練——使用通用程式模板創建通用應用程式 562
29.2.1 創建項目 562
29.2.2 設計界面 563
29.2.3 創建並連線輸出口 563
29.2.4 實現應用程式邏輯 563
29.3 實戰演練——使用視圖控制器 564
29.3.1 創建項目 565
29.3.2 設計界面 566
29.3.3 創建並連線輸出口 566
29.3.4 實現應用程式邏輯 566
29.3.5 生成應用程式 566
29.4 實戰演練——使用多個目標 567
29.4.1 將iPhone目標轉換為iPad目標 567
29.4.2 將iPad目標轉換為iPhone目標 568
29.5 實戰演練——創建基於“主-從”視圖的應用程式 569
29.5.1 創建項目 569
29.5.2 調整iPad界面 570
29.5.3 調整iPhone界面 571
29.5.4 實現應用程式數據源 572
29.5.5 實現主視圖控制器 574
29.5.6 實現細節視圖控制器 575
29.5.7 生成應用程式 576
第30章 推服務和多執行緒 577
30.1 推服務 577
30.1.1 推服務簡介 577
30.1.2 推服務的機制 578
30.2 多執行緒 578
30.2.1 多執行緒基礎 578
30.2.2 iOS中的多執行緒 580
30.2.3 執行緒的同步與鎖 584
30.2.4 執行緒的互動 585
30.3 ARC機制 586
30.3.1 ARC概述 586
30.3.2 ARC中的新規則 587