第1章UIKitDynamics 11.1示例程序 1
1.2UIKitDynamics介紹 2
1.3UIKitDynamics具體實現 2
1.3.1重力效果 3
1.3.2碰撞效果 4
1.3.3附著效果 6
1.3.4彈跳效果 7
1.3.5瞬間位移 8
1.3.6推力效果 8
1.3.7元素屬性 10
1.4深入了解UIDynamicAnimator和UIDynamicAnimatorDelegate 11
1.5小結 12
第2章CoreLocation、MapKit和Geofencing框架 13
2.1示例程序 13
2.2獲取用戶位置 13
2.2.1請求和允許 14
2.2.2檢查服務 16
2.2.3開始位置請求 17
2.2.4解析和理解位置數據 19
2.2.5重大變更通知 20
2.2.6使用GPX文件測試指定位置 20
2.3顯示地圖 21
2.3.1了解坐標系 21
2.3.2MKMapKit配置和自定義 22
2.3.3對用戶操作的響應 23
2.4地圖標注和覆蓋物 24
2.4.1添加標注 24
2.4.2顯示標準和自定義的標注視圖 26
2.4.3可拖曳的標注視圖 29
2.4.4使用地圖覆蓋物 30
2.5地理編碼和反向地理編碼 31
2.5.1對地址進行地理編碼 31
2.5.2對位置進行反向地理編碼 35
2.6地理圍欄 38
2.6.1判斷區域監控是否可用 38
2.6.2定義邊界 38
2.6.3監控變更 39
2.7獲取路徑 41
2.8小結 45
第3章排行榜 47
3.1示例程序 47
3.1.1彈出仙人掌 49
3.1.2仙人掌間的相互影響 51
3.1.3顯示生命值和得分 53
3.1.4暫停和恢復 54
3.1.5有關Whack-a-Cac游戲的最后問題 55
3.2iTunesConnect 55
3.3GameCenter管理器 58
3.4認證 60
3.4.1常見的認證錯誤 60
3.4.2iOS6和新的認證系統 62
3.5提交得分 64
3.5.1向Whack-a-Cac中添加得分 66
3.5.2展示排行榜 68
3.5.3得分挑戰 70
3.5.4深入討論排行榜 71
3.6小結 72
第4章成就系統 73
4.1iTunesConnect 73
4.2顯示成就進度 75
4.3GameCenterManager和認證 76
4.4成就系統緩存 76
4.5上報成就系統 77
4.6添加成就關聯 79
4.7進度完成通知欄 80
4.8成就挑戰系統 80
4.9向Whack-a-Cac添加成就系統 83
4.9.1是否達成成就 83
4.9.2部分完成的成就 85
4.9.3多會話成就 86
4.9.4攜帶成就和保存成就精度 87
4.9.5基于時間的成就 88
4.10重置成就系統 89
4.11深入討論成就系統 90
4.12小結 91
第5章AddressBook框架初步 93
5.1支持AddressBook很重要 93
5.2AddressBook開發的限制 93
5.3示例程序 94
5.4開始實現AddressBook并運行 94
5.4.1從AddressBook讀取數據 96
5.4.2從AddressBook讀取多值數據 97
5.4.3理解AddressBook標簽 98
5.4.4處理地址信息 99
5.5AddressBook圖形用戶界面 100
5.6編寫代碼來創建聯系人 105
5.7小結 107
第6章MusicLibraries框架 109
6.1示例程序 109
6.2創建播放引擎 110
6.2.1注冊播放通知 111
6.2.2用戶控制 112
6.2.3處理狀態改變 114
6.2.4時長和計時器 118
6.2.5隨機播放和循環播放 119
6.3資源選擇器 119
6.4編程實現選擇器 121
6.4.1播放隨機歌曲 121
6.4.2謂詞匹配 123
6.5小結 124
第7章實現HealthKit框架 125
7.1HealthKit介紹 125
7.2Health.app介紹 126
7.3示例程序 126
7.4向項目添加HealthKit 127
7.5請求授權HealthData 128
7.6讀取HealthKit特征數據 130
7.7讀寫基本的HealthKit數據 131
7.8讀寫復雜的HealthKit數據 133
7.9小結 137
第8章實現HomeKit框架 139
8.1示例程序 139
8.2HomeKit介紹 139
8.3設置HomeKit組件 140
8.3.1設置開發者賬號 140
8.3.2啟用HomeKit功能 141
8.3.3家庭管理器 142
8.3.4家庭 143
8.3.5房間和區域 144
8.3.6附件 146
8.3.7服務和服務組 149
8.3.8動作和動作集 151
8.4使用HomeKitAccessorySimulator進行測試 152
8.5使用觸發器計劃動作 153
8.6小結 154
第9章JSON的使用和解析 155
9.1JSON 155
9.1.1使用JSON的好處 155
9.1.2JSON資源 156
9.2示例程序 156
9.3訪問服務器 156
9.4從服務器獲取JSON 156
9.4.1創建請求 157
9.4.2檢查反饋 157
9.4.3解析JSON 158
9.4.4顯示數據 158
9.5發送消息 160
9.5.1JSON數據編碼 160
9.5.2向服務器發送JSON數據 162
9.6小結 163
第10章通知機制 165
10.1本地通知和推送通知的區別 165
10.2示例程序 166
10.3應用設置 166
10.4創建DevelopmentPushSSLCertificate 168
10.5開發配置文件 171
10.6準備自定義聲音 175
10.7注冊通知 175
10.8設置本地通知 176
10.9接收通知 178
10.10推送通知服務器 179
10.11發送推送通知 179
10.12處理APNs反饋 180
10.13小結 181
第11章基于CloudKit的云存儲 183
11.1CloudKit基礎 183
11.2示例程序 184
11.3設置CloudKit項目 184
11.3.1賬戶設置 184
11.3.2啟用iCloud功能 185
11.4CloudKit概念 186
11.4.1容器 186
11.4.2數據庫 186
11.4.3記錄 186
11.4.4記錄區域 187
11.4.5記錄標識符 187
11.4.6asset對象 187
11.5CloudKit基礎操作 188
11.5.1獲取記錄 188
11.5.2創建并保存記錄 189
11.5.3更新和保存記錄 191
11.6訂閱和推送 191
11.6.1推送設置 192
11.6.2數據變更的訂閱 192
11.7用戶發現和管理 193
11.8在dashboard中管理數據 197
11.9小結 199
第12章extension 201
12.1extension的類型 201
12.1.1Today 201
12.1.2Share 202
12.1.3Action 202
12.1.4PhotoEditing 202
12.1.5DocumentProvider 202
12.1.6CustomKeyboard 202
12.2理解extension 202
12.3API限制 203
12.4創建extension 203
12.5Todayextension 205
12.6在hostapp和extension間共享代碼和信息 206
12.7AppleWatchextension 207
12.8小結 209
第13章Handoff 211
13.1示例程序 211
13.2Handoff基礎 211
13.3實現Handoff 213
13.3.1創建用戶活動 213
13.3.2繼續執行一個活動 215
13.4在基于文檔的應用中實現Handoff 216
13.5小結 218
第14章AirPrint 219
14.1AirPrint打印機 219
14.2測試AirPrint 220
14.3打印文本 221
14.3.1打印信息 222
14.3.2設置頁面范圍 222
14.3.3UISimpleTextPrint-
Formatter 223
14.3.4錯誤處理 223
14.3.5開始一個打印任務 224
14.3.6打印機模擬器反饋 224
14.4打印中心 225
14.5打印呈現的HTML 226
14.6打印PDF 227
14.7小結 228
第15章開始使用CoreData 229
15.1CoreData的選擇 230
15.2示例程序 231
15.3開始一個CoreData項目 232
15.4創建托管對象模型 235
15.4.1創建實體 236
15.4.2添加特性 236
15.4.3建立關系 237
15.4.4自定義托管對象子類 238
15.5設置默認數據 238
15.5.1插入新的托管對象 239
15.5.2其他默認的數據設置
方法 240
15.6顯示托管對象 240
15.6.1創建取回請求 241
15.6.2根據對象ID取回托管對象 242
15.6.3顯示對象數據 244
15.6.4使用謂詞 245
15.7取回結果控制器介紹 246
15.7.1準備取回結果控制器 247
15.7.2整合表視圖和取回結果控制器 248
15.7.3對CoreData變化的響應 250
15.8添加、編輯和刪除托管對象 253
15.8.1插入新的托管對象 253
15.8.2刪除托管對象 254
15.8.3編輯現有的托管對象 255
15.8.4保存和回滾修改 255
15.9小結 257
第16章使用社交框架整合Twitter和Facebook 259
16.1示例程序 259
16.2用戶登錄 260
16.3使用SLComposeView-Controller 261
16.4使用自定義界面發送消息 263
16.4.1向Twitter發送消息 263
16.4.2向Facebook發送消息 267
16.4.3創建Facebook應用 267
16.5訪問用戶時間軸 272
16.5.1Twitter 272
16.5.2Facebook 277
16.6小結 281
第17章后臺任務處理 283
17.1示例程序 283
17.2檢查后臺運行的可行性 284
17.3在后臺完成任務 285
17.3.1后臺任務標識符 286
17.3.2超時處理程序 286
17.3.3完成后臺任務 287
17.4實現后臺活動 288
17.4.1后臺活動的類型 288
17.4.2在后臺播放音樂 289
17.5小結 292
第18章多線程開發的性能 293
18.1示例程序 293
18.2隊列介紹 294
18.3在主線程上運行 295
18.4在后臺運行 296
18.5在操作隊列中運行 298
18.5.1并發操作 298
18.5.2串行操作 299
18.5.3取消操作 301
18.5.4自定義操作 302
18.6在調度隊列中運行 303
18.6.1并發調度隊列 304
18.6.2串行調度隊列 305
18.7小結 307
第19章使用Keychain和TouchID保護并訪問數據 309
19.1示例程序 310
19.2創建和使用Keychain 310
19.2.1創建新的KeychainItemWrapper 310
19.2.2保存和獲取PIN 312
19.2.3Keychain特性鍵 312
19.2.4保護字典對象 313
19.2.5重置Keychain元素 315
19.2.6在應用間共享Keychain 315
19.2.7Keychain錯誤代碼 316
19.3實現TouchID 317
19.4小結 318
第20章處理圖片和過濾器 319
20.1示例程序 319
20.2基本圖片數據和顯示 319
20.2.1實例化圖片 319
20.2.2顯示圖片 321
20.2.3使用圖片選擇器 323
20.2.4調整圖片尺寸 325
20.3CoreImage過濾器 326
20.3.1過濾器類別和過濾器 326
20.3.2過濾器特性 328
20.3.3初始化圖片 331
20.3.4渲染過濾后的圖片 331
20.3.5鏈式過濾 332
20.4特征檢測 333
20.4.1創建人臉檢測器 334
20.4.2處理人臉特征 334
20.5小結 336
第21章集合視圖 337
21.1示例程序 337
21.2集合視圖介紹 338
21.2.1創建一個集合視圖 338
21.2.2為集合視圖實現數據源方法 340
21.2.3實現集合視圖委托方法 342
21.3定制集合視圖和流布局 344
21.3.1基礎定制 344
21.3.2修飾視圖 346
21.4創建定制布局 349
21.5集合視圖動畫 353
21.5.1集合視圖布局切換 354
21.5.2集合視圖布局動畫 355
21.5.3集合視圖變化動畫 357
21.6小結 357
第22章TextKit介紹 359
22.1示例程序 359
22.2NSLayoutManager介紹 360
22.3動態鏈接檢測 362
22.4檢測點擊 363
22.5路徑排除 364
22.6ContentSpecificHighlighting特性 365
22.7使用DynamicType更改字體設置 370
22.8小結 371
第23章手勢識別 373
23.1手勢識別的類型 373
23.2基礎手勢識別的用法 374
23.3示例程序介紹 375
23.3.1點擊識別動作 375
23.3.2捏壓識別動作 377
23.4在一個視圖中識別多個手勢 378
23.4.1手勢識別的工作原理 380
23.4.2在一個視圖中識別多個手勢:Redux 381
23.4.3請求手勢識別失敗 382
23.5定制UIGestureRecognizer子類 384
23.6小結 384
第24章訪問照片庫 385
24.1示例程序 385
24.2Photos框架 386
24.3使用資源集合和資源 386
24.3.1權限 387
24.3.2資源集合 388
24.3.3資源 391
24.4照片庫中的編輯操作 393
24.4.1編輯資源集合 393
24.4.2編輯資源 395
24.5處理照片流 398
24.6小結 398
第25章Passbook和PassKit 399
25.1示例程序 400
25.2設計通行證 400
25.2.1通行證的類型 400
25.2.2通行證布局——登機牌 401
25.2.3通行證布局——優惠券 401
25.2.4通行證布局——入場券 402
25.2.5通行證布局——通用卡 402
25.2.6通行證布局——購物卡 402
25.2.7通行證的顯示 403
25.3創建通行證 404
25.3.1基礎通行證標識 405
25.3.2通行證相關信息 405
25.3.3條形碼識別 406
25.3.4通行證視覺外觀信息 406
25.3.5通行證區域 407
25.4通行證的簽名和封裝 409
25.4.1創建PassTypeID 409
25.4.2創建通行證簽名證書 411
25.4.3創建清單 415
25.4.4通行證的簽名和封裝 415
25.4.5測試通行證 416
25.4.6具體應用中的通行證交互 417
25.5自動更新通行證 426
25.6小結 426
第26章調試和工具 427
26.1調試 427
26.1.1第一個計算機錯誤 427
26.1.2Xcode基礎調試 428
26.2斷點 430
26.2.1定制斷點 430
26.2.2標志斷點和異常斷點 431
26.2.3斷點范圍 432
26.3使用調試器 432
26.4工具 433
26.4.1工具界面 434
26.4.2TimeProfiler工具 436
26.4.3Leaks工具 438
26.4.4進一步了解調試工具 440
26.5小結 440