《精通iOS框架(第2版)》由[美]Kyle Richter、Joe Keeley編著,馮宗翰、江銘、朱倩 譯,由清華大學出版社於2016年05月出版的書籍。
基本介紹
- 書名:精通iOS框架(第2版)
- 作者:[美]Kyle Richter,Joe Keeley
- 譯者:馮宗翰、江銘、朱倩
- ISBN:9787302433811
- 定價:79.80
- 出版社:清華大學出版社
- 出版時間:2016-05-01
- 裝幀:平裝
- 開本:16開
內容簡介,作者薦語,目 錄,
內容簡介
蘋果的iOS SDK提供了非常強大的框架集合,即使到現在為止,找到這些框架的詳細介紹和使用方法都 有一定困難。不過,藉助本書的實用見解和經過驗證的代碼,你可以使用蘋果公司提供的這些框架來創建更有創意、更實用的套用,同時也會讓編寫代碼的過程更加快速、讓代碼更加可靠,也讓套用更加成功、更有市場。 Kyle Richter和Joe Keeley關注專業開發者每天都會用到的一些中高級技術,涉及的技術範圍從支持社交網路到安全保障,從Core Data到iCloud,甚至有關Apple Watch的內容都包含在內。 作為一本便捷的模組化參考書,幾乎每一章都會包含一個完整的Objective-C示例程式。另有一個跨章節的Game Center案例,也正好演示了多個iOS功能是如何進行組合的。
作者薦語
Kyle Richter是MartianCraft公司的CEO,MartianCraft公司曾贏得Mobile Development Studio稱號。Kyle在20世紀90年代初就開始從事軟體開發工作,並始終專注於基於蘋果公司平台的開發,他在iOS開發方面已經出版和共同出版了多種著作,包括Beginning iOS Game Center Development、Beginning Social Game Development和iOS Components and Frameworks。利用管理MartianCraft公司每日運營的同時,Kyle還要在全球出差,介紹有關開發和公司管理的經驗。現在佛羅里達群島是他的家,因為在那裡他要花時間陪伴他可愛的邊境牧羊犬。你也可以通過@kylerichter在Twitter上找到他。
目 錄
第1章 UIKit Dynamics 1
1.1 示例程式 1
1.2 UIKit Dynamics介紹 2
1.3 UIKit Dynamics具體實現 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章 Core Location、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.2 MKMapKit配置和自定義 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
- 第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