精通iOS框架(第2版)( 簡體 字) | |
作者:[美]Kyle Richter,Joe Keeley 著 | 類別:1. -> 程式設計 -> 手機程式 -> iPhone |
譯者:馮宗翰 江銘 朱倩 譯 | |
出版社:清華大學出版社 | 3dWoo書號: 44289 詢問書籍請說出此書號! 有庫存 NT售價: 400 元 |
出版日:5/1/2016 | |
頁數:440 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302433811 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章UIKitDynamics 1
1.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 蘋果的iOS SDK提供了非常強大的框架集合,即使到現在為止,找到這些框架的詳細介紹和使用方法都
有一定困難。不過,借助本書的實用見解和經過驗證的代碼,你可以使用蘋果公司提供的這些框架來創建更有創意、更實用的應用,同時也會讓編寫代碼的過程更加快速、讓代碼更加可靠,也讓應用更加成功、更有市場。 Kyle Richter和Joe Keeley關注專業開發者每天都會用到的一些中高級技術,涉及的技術范圍從支持社交網絡到安全保障,從Core Data到iCloud,甚至有關Apple Watch的內容都包含在內。 作為一本便捷的模塊化參考書,幾乎每一章都會包含一個完整的Objective-C示例程序。另有一個跨章節的Game Center案例,也正好演示了多個iOS功能是如何進行組合的。 主要內容: ■ 添加類似物理效果的動畫和動作到UIView視圖 ■ 使用Core Location確定設備的位置,顯示自定義地圖并實現地理圍欄 ■ 在游戲和其他應用中加入帶有社交元素的排行榜功能 ■ 訪問音樂和圖片集 ■ 使用HealthKit實現帶有健康和健身功能的應用 ■ 通過HomeKit實現家居智能化 ■ 使用JSON在平臺間傳輸數據 ■ 設置本地和遠程通知 ■ 使用CloudKit實現數據的遠程存儲和同步 ■ 實現訪問應用的extension功能 ■ 輕松添加AirPrint功能 ■ 在iOS 8和Yosemite設備之間提供連續的Handoff功能 ■ 學習有效使用Core Data ■ 通過社交框架在應用中整合Twitter和Facebook ■ 使用Grand Central Dispatch機制處理多線程任務 ■ 使用Keychain和Touch ID保護用戶數據 ■ 定制集合視圖 ■ 掌握大部分的手勢識別方法 ■ 創建和發送“通行證”到Passbook ■ 調試工具的介紹及應用的優化 序 言
從2008年iPhone SDK(現在叫iOS SDK)的第一個測試版發布之日起,我就一直從事有關iOS的開發工作。那時我主要關注有關Mac桌面程序的開發,沒有過多考慮移動應用的開發。 如果你希望成為一個早期開發者,那你只能靠自己了。蘋果公司一貫的做法就是文檔非常少,并且由于訪問SDK需要NDA——秘密解碼環,因此最初你只能靠自己。你還不能在Google上或打開StackOverflow尋求到幫助,并且那時也一定沒有任何介紹SDK的書籍。 從蘋果發布最初的iPhone到現在已經走過漫漫8年時光(是的,真的只有8年)。iPhone SDK現在也被稱為iOS SDK。有關iOS開發的書籍和博客,以及播客和研討會層出不窮。從2009年起,WWDC大會變得更加難以參加,使得新老開發者在學習最新的平臺技術時變得越發困難。尤其對于iOS開發者,要學的新東西真的太多了。 作為一名iOS開發者,我遇到的最大的難題就是設法駕馭蘋果工具箱(kit)中所有的組件和框架。iOS HIG本能幫助到我們,不過它對于組件和框架的介紹還不夠詳細深入。現在我們確實能夠通過Google或者結合StackOverflow找到資料,不過這些資料一般都僅解釋了如何去做,很少探究為什么要那樣做,通常也無法做到很詳細地分析。 所以Kyle和Joe決定這樣做——給出所有這些框架的詳細介紹,讓讀者可以全面了解組成iOS SDK的核心框架。 很榮幸與Kyle和Joe相識多年。他們是我所見過的最聰明的開發者。這些年來他們都各自編寫了大量優秀的應用,并通過分享他們的經驗為iOS開發社區不斷貢獻自己的力量,不斷在研討會上發表出色演講,出版有關iOS開發的書籍。如果你有任何關于iOS的問題,有機會得到Kyle和Joe的解答將會是一件很美妙的事情。 不過讓他們如此優秀的原因還不僅是他們如百科全書一般的iOS開發知識,更在于他們愿意同遇到的每個人分享這些寶貴的知識。Kyle和Joe沒有競爭對手,有的只是朋友。 Kyle和Joe對于iOS SDK的深入理解貫穿本書,這也是我喜歡本書的原因之一。本書對每個組件都進行了詳細介紹,有些內容甚至在網上都很難找到。 我還非常喜歡本書的結構。讀者不需要從頭到尾閱讀。相反,你可能因為需要了解如何實現集合視圖而翻開本書,或者在想學習如何在后臺線程上運行任務時打開本書。在你需要本書時只需打開它,找到解決辦法,將其在自己的代碼中實現,然后再把它放回書架上直到下次再遇到困難。這就是該書能夠成為iOS開發者最重要的一本參考書籍的原因,不管你是初學者還是經驗豐富的老手。你可能覺得自己精通Core Location和MapKit,不過我覺得你在本書中一定能找到以前沒有接觸過的知識。 Kyle和Joe為人非常謙虛,從不驕傲自大。他們從來不認為自己比其他開發者優秀。他們將這種精神一點點灌輸到Mac和iOS開發者社區,使其成為一個開發者之間互助學習的大平臺,對這個行業的發展幫助很大。這本著作也是他們無私分享多年經驗和知識的另一個見證。 本書同Mark和LaMarche及Sadun的著作一樣,將始終伴隨在我手邊。當我在2008年第一次開始做iOS開發時我多希望有這么一本書。現在終于如愿以償,有了這本書就方便多了。 — Kirby Turner White Peak Software公司首席程序員,Learning iPad Programming: A Hands-On Guide to Building iPad Apps, Second Edition(Addison-Wesley Professional)一書的作者,Cocoa開發者社區的管理者和研討會的熱衷者。 前 言 歡迎閱讀《精通iOS框架(第2版)》! 對于現在的讀者來說,幾乎有上百種“iOS入門教程”可供選擇,介紹特定專題的進階教程也數不勝數,例如專門介紹Core Data知識或者專門介紹有關數據安全方面的教程。不過令人感到困惑的是還沒有一種書能夠作為初學者向更高級內容前進的橋梁。 撰寫本書旨在向讀者介紹中高級的開發知識,因為這些看起來零散的框架很多都無法單獨出書。并不是這些框架不夠吸引人,而是因為它們還不能算是一個很大的專題,不需要過多篇幅的介紹。從如何使用JSON到如何訪問照片庫,這些框架都是專業iOS開發者每天都會用到的,不過市面上少有書籍介紹它們。 此外,對很多進階內容的討論也要考慮到面對的讀者可能是初學者。翻開一本500頁的Core Data教程也是需要勇氣的,不過還好本書第15章給出了一個簡捷的Core Data入門教程。其他有關類似的入門教程還包括調試和工具、TextKit、HomeKit、HealthKit和CloudKit等章節。 對于Game Center排行榜和成就榜、AirPrint、音樂庫、地址簿和Passbook的內容則給出詳細全面的講解。無論你是剛剛完成第一個iOS項目開發的初學者還是一名經驗豐富的資深開發人員,都可以從本書中找到對你有幫助的內容。 書中所有章節的內容都根據iOS 8版本進行了更新。如果你遇到有關兼容性的問題請聯系我們,我們會發布更新并進行修改。 |