內容簡介
本書在國外iOS開發者社區內頗受推崇,由資深的iOS開發工程師撰寫,國際Mac和iPhone開發者社區CocoaHeads聯合創始人Mark Dalrymple等數位專家聯袂推薦!相比同類書,它有兩大特色:第一,全書以一個真實的PhotoWheel套用(可在APP Store上下載)為驅動,既以疊代的方式逐步講解了整個套用的開發過程,又全面而系統地講解了開發iPad套用所需要掌握的技術知識、方法、流程,可操作性強,是系統學習和實踐iPad套用開發的經典著作;第二,本書根據iPad和iPhone在設備特性上的差異深刻地指出了iPad套用開發和iPhone套用開發之間的不同之處,對於深度的iPad套用開發者來說,本書是極為寶貴的!
全書有 27 章,分為三部分:第一部分(第1~7章)詳細介紹了開發iOS套用應具備的基礎知識,包括Xcode、Interface Builder、Objective-C和Cocoa等,以及如何為iPad配置信息和如何構建應用程式;第二部分(第8~24章)是本書的核心,詳細講解了PhotoWheel的完整開發過程以及所需的理論知識,具體包括創建主從複合應用程式、使用表格視圖、用視圖工作、使用觸屏手勢、添加照片、數據持久化、故事板、視圖控制器、創建照片瀏覽器、支持設備旋轉、用AirPrint列印、傳送電子郵件、與iCloud同步、用AirPlay製作幻燈片和Core Image的視覺特效等;第三部分(第25~27章)介紹了應用程式的調試和發布。最後是一個附錄,介紹了如何創建iOS開發賬號、下載iOS SDK,以及在Mac計算機上安裝開發工具。
作者簡介
Kirby Turner 資深軟體開發工程師,有超過20年的軟體開發經驗。目前是一位獨立的軟體開發者,專注於Mac和iOS平台上的套用開發,有多款套用在APP Store上銷售。熱衷於分享,共同組織了CocoaHeads等技術會議,為社區的發展和改善貢獻了力量。
Tom Harrington 資深Mac和iOS套用開發工程師,在該領域有6年以上的開發經驗,在社區里非常活躍,共同組織了CocoaHeads等技術會議和克羅拉多州的多場iOS開發者活動,著有《Core Data for iOS》一書。此外,他還擅長嵌入式系統和Linux平台下的軟體開發。
目錄
譯者序
序
前言
第一部分 入門
第1章 你的第一個應用程式 1
1.1 創建“Hello World”項目 1
1.2 在螢幕上顯示文字 5
1.3 說“Hello” 6
1.4 小結 10
第2章 Xcode入門 11
2.1 集成開發環境 11
2.2 工作區視窗 12
2.2.1 工具列 12
2.2.2 導航區 12
2.2.3 編輯區 13
2.2.4 工具區 14
2.2.5 調試區 15
2.3 首選項 15
2.3.1 字型與顏色 16
2.3.2 文本編輯 16
2.3.3 按鍵綁定首選項 18
2.3.4 代碼補全 19
2.4 開發者文檔 20
2.5 編輯器 21
2.6 項目設定 22
2.7 方案 23
2.8 組織者 24
2.9 其他Xcode工具 25
2.10 小結 25
第3章 Interface Builder入門 26
3.1 Interface Builder 26
3.2 IB怎樣工作 27
3.3 著手使用IB 27
3.3.1 選取與複製對象 29
3.3.2 對齊對象 29
3.3.3 布局矩形框 31
3.3.4 修改狀態 31
3.4 將NIB與代碼關聯起來 33
3.4.1 在代碼中定義插座變數 33
3.4.2 使用輔助編輯器 36
3.5 故事板 37
3.6 小結 37
第4章 Objective-C入門 38
4.1 什麼是Objective-C 38
4.2 玩轉Objective-C 39
4.2.1 動手寫代碼 40
4.2.2 對象 41
4.2.3 類 42
4.2.4 NSObject 43
4.2.5 接口 43
4.2.6 實例變數 44
4.2.7 聲明屬性 45
4.2.8 方法 47
4.2.9 實現 47
4.2.10 合成 48
4.2.11 init 49
4.2.12 super 49
4.2.13 flip 49
4.2.14 選擇器 50
4.2.15 點語法 51
4.3 CoinTosser類的用法 51
4.4 記憶體管理 52
4.5 小結 53
第5章 Cocoa入門 54
5.1 Cocoa棧 54
5.2 Foundation 55
5.2.1 數據類型 56
5.2.2 集合類 60
5.2.3 工具類與函式 61
5.3 UIKit 65
5.3.1 UIApplication 65
5.3.2 UIWindow 65
5.3.3 UIScreen 65
5.3.4 UIView 65
5.3.5 UIViewController 65
5.3.6 UIWebView 65
5.3.7 UILabel 66
5.3.8 UITextField 66
5.3.9 UITextView 66
5.3.10 UIButton 66
5.3.11 UITableView與
UITableViewCell 67
5.3.12 UIScrollView 67
5.3.13 UIPageControl 67
5.3.14 UIPickerView 67
5.3.15 UIDatePicker 67
5.3.16 UISwitch 67
5.3.17 UISlider 68
5.3.18 UIMenuController和
UIMenuItem 68
5.3.19 UIImage 68
5.3.20 UIImageView 68
5.3.21 UINavigationBar 68
5.3.22 UINavigationController 69
5.3.23 UIToolbar 69
5.3.24 UITabBar 69
5.3.25 UIBarButtonItem 69
5.3.26 UISegmentedControl 70
5.4 Cocoa中常見的設計模式 70
5.4.1 模型-視圖-控制器模式 70
5.4.2 目標-動作模式 71
5.5 小結 71
第6章 為iPad配置信息 72
6.1 關於iOS配置門戶 72
6.2 提供信息的過程:概括說明 73
6.2.1 設備ID是什麼 73
6.2.2 什麼是應用程式ID 74
6.2.3 什麼是開發信息提供概述 75
6.3 設立開發用的機器 76
6.3.1 請求開發許可證 76
6.3.2 提交CSR以求批准 78
6.3.3 下載並安裝許可證 79
6.4 配置設備 80
6.5 使用iOS配置門戶 81
6.5.1 添加設備ID 82
6.5.2 添加應用程式ID 83
6.5.3 創建開發信息提供概述 84
6.5.4 下載開發信息提供概述 85
6.5.5 安裝開發信息提供概述 86
6.6 小結 86
第7章 應用程式設計 87
7.1 定義應用程式 87
7.1.1 應用程式名稱 88
7.1.2 應用程式概述 88
7.1.3 功能清單 88
7.1.4 目標用戶 89
7.1.5 再度審視功能清單 90
7.1.6 有競爭關係的產品 90
7.1.7 App Charter示例 90
7.2 用戶界面構思 92
7.2.1 閱讀HIG(iOS人機界面指南) 92
7.2.2 使你的應用程式
“令人心動” 92
7.2.3 為設備設計 93
7.2.4 人們使用iOS設備與使用
網頁或桌面計算機的方式
不一樣 93
7.2.5 戴上工業設計師的帽子 94
7.2.6 比喻 94
7.2.7 聲音效果 94
7.2.8 定製現有的控制項 95
7.2.9 聘請設計師 96
7.3 原型圖 96
7.3.1 什麼是原型圖 96
7.3.2 要對什麼設計原型圖 97
7.3.3 使用的工具 97
7.4 建立原型 100
7.4.1 什麼是原型 100
7.4.2 怎樣創建原型應用程式 101
7.5 小結 101
第二部分 構建PhotoWheel
第8章 創建主從複合應用程式 103
8.1 構建原型應用程式 103
8.1.1 什麼是分割視圖控制器 104
8.1.2 創建新的項目 105
8.1.3 使用模擬器 105
8.2 更進一步的觀察 106
8.2.1 項目結構 107
8.2.2 應用程式委派 107
8.2.3 啟動選項 111
8.2.4 其他UIApplicationDelegate
方法 112
8.3 UISplitViewController詳解 112
8.3.1 指定分割視圖控制器的委派 115
8.3.2 細節視圖控制器 116
8.3.3 主視圖控制器 116
8.4 小結 117
8.5 習題 117
第9章 使用表格視圖 118
9.1 首要的事情 118
9.2 深層剖析 120
9.2.1 UITableView 120
9.2.2 UITableViewCell 121
9.2.3 UITableViewDelegate 121
9.2.4 UITableViewDataSource 121
9.2.5 UITableViewController 121
9.3 操作表格視圖 121
9.3.1 一個簡單的模型 121
9.3.2 顯示數據 123
9.3.3 添加數據 127
9.3.4 編輯數據 139
9.3.5 刪除數據 143
9.3.6 重排數據 144
9.3.7 選取數據 145
9.4 小結 147
9.5 習題 148
第10章 用視圖工作 149
10.1 定製視圖 149
10.2 輪狀視圖 150
10.3 旋轉木馬視圖 156
10.4 Photo Wheel視圖單元 161
10.5 小結 164
10.6 習題 164
第11章 使用觸屏手勢 165
11.1 觸摸手勢簡介 165
11.1.1 預定義的觸屏手勢 166
11.1.2 手勢種類 166
11.1.3 怎樣使用手勢識別類 166
11.2 定製觸屏手勢 169
11.2.1 創建撥動手勢識別類 170
11.2.2 撥動手勢識別類的用法 172
11.3 小結 176
11.4 習題 176
第12章 添加照片 177
12.1 兩種途徑 177
12.1.1 Assets Library 177
12.1.2 圖片撿拾控制器 178
12.2 圖片撿拾控制器的用法 179
12.2.1 使用動作單 181
12.2.2 UIImagePickerController的
用法 184
12.2.3 保存至攝像頭膠捲 187
12.3 小結 188
12.4 習題 188
第13章 數據持久化 189
13.1 數據模型 189
13.1.1 照片 189
13.1.2 相冊 189
13.1.3 前瞻性考慮 189
13.2 使用屬性清單來構建模型 190
13.2.1 什麼是屬性清單 190
13.2.2 建立數據模型 190
13.2.3 讀取和保存相冊 191
13.2.4 向相冊添加新照片 195
13.2.5 顯示相冊中的照片 198
13.3 使用Core Data構建模型 200
13.3.1 什麼是Core Data 200
13.3.2 託管對象和實體描述 200
13.3.3 託管對象語境 201
13.3.4 持久存儲和持久存儲
協調器 202
13.3.5 向PhotoWheelPrototype
添加Core Data 202
13.3.6 添加Core Data框架 202
13.3.7 建立Core Data棧 203
13.4 在PhotoWheel中
使用Core Data 206
13.4.1 Core Data的模型編輯器 206
13.4.2 添加實體 206
13.4.3 創建NSManagedObject
子類 209
13.5 向模型對象添加定製代碼 211
13.5.1 用Core Data讀取和保存
相冊 215
13.5.2 使用Core Data向相冊
添加新照片 218
13.5.3 用Core Data顯示相冊中
的照片 220
13.6 直接使用SQLite 221
13.7 小結 221
13.8 習題 221
第14章 Xcode中的故事板 222
14.1 什麼是故事板 222
14.1.1 故事板的用法 223
14.1.2 場景 224
14.1.3 過渡 224
14.2 對PhotoWheel創作故事板 225
14.2.1 工作區 225
14.2.2 添加主故事板 226
14.2.3 設定UIMainStoryboardFile 227
14.2.4 更新AppDelegate 228
14.2.5 添加圖片 228
14.2.6 應用程式圖示 229
14.2.7 初始的視圖控制器 229
14.2.8 另一個場景 230
14.2.9 創建過渡 232
14.3 小結 233
14.4 習題 233
第15章 視圖控制器詳解 234
15.1 實現視圖控制器 234
15.2 過渡 236
15.2.1 創建定製過渡 237
15.2.2 設定過渡 237
15.2.3 實現定製過渡 239
15.2.4 編譯之前的工作 241
15.3 定製彈出轉換 243
15.4 容器視圖控制器 245
15.4.1 創建容器視圖控制器 246
15.4.2 添加子場景 246
15.4.3 添加子視圖控制器 248
15.4.4 修正定製的推式過渡 251
15.5 小結 251
15.6 習題 252
第16章 構造主螢幕 253
16.1 重用原型代碼 253
16.1.1 複製檔案 254
16.1.2 Core Data模型 255
16.1.3 WheelView要做的修改 260
16.2 顯示相冊 270
16.2.1 實現相冊集視圖控制器 271
16.2.2 設定託管對象語境 277
16.2.3 添加相冊 278
16.3 管理相冊 279
16.3.1 選取相冊 279
16.3.2 對相冊起名 283
16.3.3 修正工具列的顯示 288
16.3.4 刪除相冊 289
16.4 更美觀的相冊縮略圖 291
16.5 添加照片 294
16.6 顯示照片 299
16.6.1 使用GridView類 308
16.6.2 構建圖片柵格視圖單元 312
16.7 小結 315
16.8 習題 315
第17章 創建照片瀏覽器 316
17.1 使用滾動視圖 316
17.2 啟動照片瀏覽器 324
17.3 添加Chrome效果 332
17.4 放大縮小 336
17.5 刪除照片 342
17.6 小結 348
17.7 習題 348
第18章 支持設備旋轉 349
18.1 怎樣支持旋轉功能 349
18.1.1 所支持的設備放置模式 350
18.1.2 使用自動尺寸調整功能 350
18.2 自定義旋轉 351
18.2.1 支持旋轉相冊 355
18.2.2 旋轉相冊場景 355
18.2.3 調整WheelView類的代碼 356
18.2.4 旋轉About視圖 358
18.2.5 旋轉照片瀏覽器 358
18.3 修正麻煩點 358
18.3.1 修正照片瀏覽器 358
18.3.2 修正主螢幕 363
18.4 啟動畫面 365
18.5 小結 367
18.6 習題 367
第19章 用AirPrint列印 368
19.1 列印功能如何工作 368
19.1.1 列印中心Print Center 368
19.1.2 能列印的前提 369
19.1.3 列印API 369
19.2 向PhotoWheel添加列印功能 369
19.3 小結 372
19.4 習題 372
第20章 傳送電子郵件 373
20.1 工作原理 373
20.2 SendEmailController類 374
20.2.1 引入SendEmailController類 375
20.2.2 SendEmailController的
用法 378
20.3 小結 383
20.4 習題 383
第21章 Web服務 384
21.1 基礎知識 384
21.2 Flickr 385
21.2.1 向PhotoWheel加入Flickr
支持 386
21.2.2 更新Flickr View Controller
Scene 388
21.2.3 顯示Flickr場景 389
21.2.4 包裝Flickr套用編程接口 391
21.2.5 異步下載照片 397
21.2.6 FlickrViewController的
實現 402
21.3 其他事宜 410
21.4 還缺什麼 411
21.5 小結 411
21.6 習題 411
第22章 與iCloud同步 412
22.1 同步使事情變得簡單 412
22.2 iCloud的各種概念 412
22.2.1 檔案協調器和表現器 413
22.2.2 UIDocument與UIManagedDocument 413
22.2.3 無所不在持久存儲 414
22.3 為設備提供信息的回顧 414
22.3.1 配置應用程式ID 414
22.3.2 為iCloud提供信息 415
22.3.3 配置iCloud權利 416
22.4 對PhotoWheel的iCloud考慮 418
22.4.1 同步要做得恰到好處 418
22.4.2 使用瞬態Core Data特性 419
22.5 更新PhotoWheel以支持
iCloud 419
22.6 用iCloud來同步照片 423
22.6.1 使持久存儲協調器
無所不在 423
22.6.2 從iCloud接收變更 427
22.7 小結 430
22.8 習題 431
第23章 用AirPlay放映幻燈片 432
23.1 外部顯示選項 432
23.2 應用程式對外部顯示器的
要求 432
23.3 外部顯示器的套用編程接口 433
23.4 向PhotoWheel添加幻燈片
放映 434
23.4.1 更新故事板 434
23.4.2 添加幻燈片放映顯示器 435
23.5 管理外部顯示器 437
23.6 推進到下一張照片 440
23.7 添加幻燈片放映的用戶界面
控制項 442
23.8 更新照片瀏覽器 444
23.9 測試和調試時的注意事項 445
23.10 添加對AirPlay設備的支持 446
23.11 AirPlay的運用 447
23.12 小結 448
23.13 習題 448
第24章 Core Image的視覺特效 449
24.1 Core Image的概念 449
24.2 CIFilter 450
24.2.1 濾鏡類型 451
24.2.2 CIFilter的使用 451
24.3 圖片分析 452
24.3.1 自動增強 453
24.3.2 臉部識別 454
24.4 為PhotoWheel添加Core Image
特效 454
24.4.1 新建委派方法 455
24.4.2 濾鏡管理的實例變數 456
24.4.3 用戶界面的添加 456
24.4.4 創建CIFilter特效 461
24.4.5 濾鏡的運用 465
24.4.6 圖片自動增強功能的實現 466
24.4.7 實現臉部縮放 466
24.4.8 其他必要的方法 468
24.5 小結 469
24.6 習題 469
第三部分 最後的潤色
第25章 調試 471
25.1 了解問題所在 471
25.1.1 問題出在哪裡 471
25.1.2 重現缺陷 471
25.2 調試的概念 472
25.3 在Xcode中調試 472
25.3.1 設定和管理斷點 473
25.3.2 定製斷點 473
25.3.3 到達斷點 474
25.3.4 檢查變數 475
25.4 調試示例:外部顯示器代碼 477
25.5 什麼時候真的需要NSLog 480
25.6 使用Instruments剖析代碼 481
25.7 小結 485
第26章 發布應用程式 486
26.1 發布方法 486
26.2 構建非正式的發布 486
26.2.1 設定非正式發布的配置
信息 487
26.2.2 準備構建非正式發布的
版本 487
26.3 構建App Store的發布版本 488
26.3.1 設定App Store條款 489
26.3.2 準備為App Store發布的
版本 489
26.3.3 接下來怎么做 490
26.4 App Store流程 490
26.5 為App Store提供應用程式
信息 491
26.6 App Store媒體材料 493
26.7 iTunes Connect的運用 493
26.7.1 用戶角色 493
26.7.2 管理應用程式 494
26.8 傳送應用程式 494
26.9 更進一步 495
26.10 小結 495
第27章 結語 496
附錄A 安裝開發工具 498