iPad應用開發實踐指南( 簡體 字) | |
作者:Kirby Turner,Tom Harrington | 類別:1. -> 程式設計 -> 手機程式 -> iPad |
出版社:機械工業出版社 | 3dWoo書號: 34661 詢問書籍請說出此書號! 有庫存 NT售價: 445 元 |
出版日:1/6/2013 | |
頁數:502 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111406174 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
譯者序
序 前言 第一部分 入門 第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 本書在國外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計算機上安裝開發工具。 2011年10月,蘋果公司首席執行官Tim Cook公布了有關iPad的一些有趣數據,包括:
* 財富500強公司有92%在測試或部署iPad; * 美國本土80%的醫院在測試或用iPad控制流程; * 美國的每個州都有某種形式的iPad部署活動,有實際在進行的,也有示范性的。 但有關iPad的新聞并不止于此。FAA(美國聯邦航空局)已經批準了繁忙航線的飛行員使用iPad來代替紙質的圖表。毫無疑問,iPad正在改變著今天人們認識(及使用)計算機的方式。隨著日前發布了在iPad和iPhone設備上運行的iOS 5,這種變化越發顯得深遠。 毫無疑問,iPad是一記重拳。擁有著專利的多點觸摸界面、板載圖形芯片、強大的A5處理器以及3G或WiFi網絡,iPad是后PC時代的標志。然而更重要的是,iPad 2是怎樣嵌入Mac/iOS生態系統中的呢?Mac OS X Lion和iOS 5用戶可以使用FaceTime進行從臺式機到iPad設備的視頻聊天。還有,iOS 5的iMessage使用戶能夠用其iPad向其他iPad和iPhone用戶發送短信。iPad是硬件和技術的獨特聯姻,它是平板電腦的典范。 本書是以iOS 5為基礎編寫的,面向渴望在iPad上構建應用程序的新手開發者。本書也對期望在iPad上玩轉其應用程序的iPhone開發人員有用。雖然有些人只是把iPad看成是大一些的iPhone,其實這是不對的。作為開發者,有多得多的工作可以在iPad的用戶界面上做到,而這些工作在iPhone上可能是無法實現的。 盡管本書會對iPhone編程有簡短的討論,但著眼點還是在iPad。書中強調的這些iOS 5 SDK領域是iPad專用的,并非是針對iPhone書籍的老調重彈。另外,本書涵蓋iOS 5的新特性,例如,容器視圖控制器、iCloud和Core Image,還有Xcode 4.2中的一些關鍵新功能,例如,故事板。蘋果公司已經花了大力氣讓你在開發iOS和OS X時省事一些,本書的目標則是使你學會讓開發再容易點。 我們將學會什么 本書將教授你怎樣構建iPad專用的應用程序,手把手帶你走過創作一個真實應用程序的過程,并讓它即刻出現在App Store里!我們將要在本書中構建的應用程序名叫PhotoWheel。 下載此應用程序 可以從App Store下載PhotoWheel(網頁為itunes.apple.com/app/photowheel/id424927196&mt=8)。該應用程序是免費的,所以趕快下載PhotoWheel,先體驗一下。 PhotoWheel是所有iPad上都有的Photos應用程序的變形(雙關語)。通過PhotoWheel,你可以把自己喜愛的照片組織到相冊中,與家庭和朋友通過電子郵件分享照片,使用AirPlay的無線連接在電視機上欣賞照片。但更重要的是,你將在構建此應用程序的過程中收獲頗豐。 你將學習怎樣利用iOS 5和Xcode的最新特性,包括故事板、自動引用計數、iCloud和Core Image。同時還將學習如何利用其他iOS功能,例如,AirPrint、AirPlay和GCD(Grand Central Dispatch)。此外,你也要學習怎樣拓展應用程序的邊界,以便與互聯網上的Web服務通信。 本書是一部波瀾壯闊的教程,它向你從頭到尾展示一個實際iPad應用程序的制作過程。你可以跟著本書編程,我們將循序漸進地說明各種事物。到你讀完本書并完成編程后,你將有一個功能齊全的PhotoWheel,你可以以此向朋友和家庭炫耀(甚至可以與他們分享這個應用程序)。尤其美妙的是,你將對如何設計、編寫和發布自己的iPad應用程序充滿信心,并通過此掌握豐富的知識。 是什么讓iPad如此與眾不同 雖然iPad用的iOS版本與iPhone、iPod touch和Apple TV相同,但是iPad還是有別于這些基于iOS的其他設備。每種設備的用法都不同,而iOS為它們各自提供了一些功能。例如,運行在Apple TV上的iOS版本不會提供同樣版本的觸屏界面。 事實上,界面完全相異。Apple TV的用戶界面是iOS之上的一層,它提供了完全不同的用戶體驗。 但iPad不是這樣。它不是你能拿在手掌心里的東西,例如iPhone和iPod touch。你要用雙手操作它。滑動它、觸摸它,用戶和它交互的次數多于大部分iPhone應用程序。人們很容易認為iPad“只不過是大一點兒的iPhone”,但其實不是。 iPad和iPhone的物理尺寸明顯不同,而真正使iPad與iPhone不同的地方是理念。理念的差別在于怎樣設計iPad應用程序,以及用戶怎樣與應用程序交互。這種理念的差別源于iPad的屏幕更大。 更大的屏幕 iPad有更大的屏幕,它提供了比iPhone多兩倍以上的顯示空間。這意味著應用程序可以顯示更多信息,可以有更多空間用于用戶界面。這方面的一個精彩例子就是WeatherBug。 WeatherBug HD的設計充分利用了iPad屏幕更大的優勢。可以從圖P-1看到,比起iPhone版本,iPad版本的WeatherBug在一個屏幕上顯示了多得多的信息。在iPhone上需觸摸和滑動(有時還要憑運氣),才能找到額外的天氣信息;iPad上的WeatherBug HD則能一目了然地顯示你想要的信息,無須另外的觸摸和滑動操作。當然,觸屏上仍會有一些額外的信息。 圖P-1 左邊是iPad上的WeatherBug應用程序;右邊的截圖是同樣的WeatherBug 應用程序運行于iPhone之上的外觀(經Earth Networks許可后使用) 更少的層次 由于屏幕較小,許多iPhone應用程序采用垂直導航系統表示。可以在許多iPhone應用程序上看到這種情況。用戶觸擊一個條目,新屏幕滑動顯示出來;觸擊另一個條目,則另一個視圖滑動進屏幕。要后退的話,就要觸擊回退按鈕,此按鈕通常位于屏幕的左上角。 Dropbox應用程序精辟地說明了層次狀的導航系統。有些人可能還不知道Dropbox是個聯機服務,它可以將數據文件、文檔和圖片保存到云中。所保存的文件隨后同步到運行著Dropbox客戶端軟件的計算機和設備上。舉個例子,假如你正在筆記本電腦上編寫一份文本文檔,你將該文本文檔保存至Dropbox文件夾。隨后你想查看此文本文檔,則可以在你的iPhone上打開同一個文本文檔。Dropbox讓這種操作成為可能。 在iPhone上使用Dropbox應用程序時,你會看到一個按字母順序排列的文件和文件夾清單。觸擊一個文件或文件夾來打開它,會導致新畫面滑動進屏幕。倘若你打開的是文件,就會看到文件內容;然而如果打開的是文件夾,則會看到新的文件和文件夾清單。繼續觸擊文件夾會更深入地進入層次結構內部。 要想在層次結構里向上移動,可觸擊左上角的后退按鈕。這個按鈕上的文字標簽能夠變化,通常它顯示的是棧里前一個條目的名字,但有時顯示Back。盡管文字標簽可能變化,但后退按鈕的風格不變。后退按鈕指向左側。這種類似箭頭的風格表達了在畫面間后退的含義。 在層次結構里前進和后退的說明在圖P-2中給出。 圖P-2 在iPhone上的文件夾和文件層次結構中使用Dropbox。可以通過觸擊來 向前移動,或縮小范圍以顯示更多內容;通過觸擊后退按鈕來向后移動 iPad上也有Dropbox。那么開發者怎樣對某個明確要求層次導航的應用程序重新設計,以使結構更平面化、層次更少呢?他們利用了iPad上特有的iOS對象,即UISplitViewController,如圖P-3所示。 分割視圖控制器是一種控制顯示并排視圖的非可視對象。當以橫向方式手持iPad時,這兩個視圖就并排放置。當將iPad放置到縱向顯示模式時,左邊的視圖就會消失,這樣就使用戶將其注意力集中到右邊的主要內容上來。 注意:第8章將教你編寫基于分割視圖的應用程序。 圖P-3 iPad運行Dropbox的屏幕截圖,注意,當設備橫向放置時導航框 顯示在左側視圖中;而在iPad縱向放置時會隱藏導航框 這種視圖模式經常稱為“主—從復合視圖”,即主視圖顯示在左側,從視圖顯示在右側。主視圖用來在層次數據間定位,在Dropbox中主視圖則用來定位文件和文件夾。當你找到想要查看的文件時,在主視圖中觸擊它,文件內容會在從視圖里顯示出來。旋轉iPad為縱向模式可以隱藏主視圖,從而可以只注意文件內容。 設備放置模式的影響 大多數iPhone應用程序只支持一種放置模式,許多iPhone游戲是在橫向模式下玩的,而其他許多iPhone應用程序則以縱向模式顯示。與iPad類似,iPhone也支持設備旋轉和放置模式,但設備這么小,支持不同放置模式就顯得多余。大部分用戶以縱向模式手持其iPhone,即在使用應用程序時Home按鈕在下邊,而只在玩游戲時旋轉成橫向模式。 iPad則不同。使用iPad時,用戶會以某種放置模式抓住設備并開機,尤其是iPad沒有放在盒子里時。我們來做這個小小的試驗…… 把iPhone或iPod touch放在桌子上,讓其Home按鈕指向10點鐘方向。走開轉個身,回到設備前拿起它。看看你在拿到它時的方向。你很可能在拿起設備時會順手旋轉它,以便使Home按鈕在下邊。甚至在開機之前你已經把它旋轉成這樣了。手拿iPhone時使Home按鈕處在設備下邊幾乎是一種自然的本能。 再來做同樣的試驗,但這次使用iPad。把它放在桌上,確保Home按鈕指向10點鐘方向,然后走開。回來再拿起iPad,這時很可能你不會旋轉iPad。相反,你在拿起iPad時的設備放置模式可能和你拿起前是一樣的。 放大的多點觸屏 你知道iPad和iPhone都支持同樣的多點觸屏界面嗎?確實如此。實際上,iOS的多點觸屏界面可支持多達11個同時的觸點。這意味著你可以用上所有的手指,甚至如果你旁邊有朋友的話,可以再多一兩個人來與應用程序交互。 iPad擁有較大的屏幕,這使多點觸摸更加靈活。雖然兩只手的手勢在iPhone上活動受限,但在與iPad應用程序交互時它們卻是很自然的一部分。舉個例子,蘋果公司自己的iPad應用程序Keynote,它就利用多點觸屏界面來提供一度保留為臺式機的指指點點功能。選擇多張幻燈片,再移動它們,這只是iPad上的Keynote最優化用戶體驗的一個例子。 我們已經知道,多點觸屏界面可支持多達11個地方的同時觸摸,但怎樣驗證呢?可編寫一個iPad應用程序對同時觸摸的點數進行計數。那正是Matt Legend Gemmell做過的事情。他編寫了短小精悍的iPad應用程序,如圖P-4所示。這個應用程序能顯示同時觸摸的點數。但Matt并不止于顯示觸摸計數,他讓應用程序有著華美的外觀,使用戶玩起來妙趣橫生。 圖P-4 Matt Legend Gemmell在iPad上說明在11個地方同時觸摸的多點觸屏示例應用程序 可以從Matt的博客(網頁為mattgemmell.com/2010/05/09/ipad-multi-touch)了解其iPad多點觸屏示例的詳細信息,并下載其源代碼。 另一個探究iPad多點觸屏界面的辦法是用iPad上的Uzu應用程序,在App Store中(網頁為bit.ly/learnipadprog-UzuApp)只需1.99美元。Uzu是個“動感的多點觸屏粒子視覺效應觀察器”,很容易讓人著迷(圖P-5沒有將該應用程序表現得淋漓盡致),倘若你想看看多點觸摸的一些明智用法,真應該下載并玩玩Uzu。 圖P-5 iPad上的粒子視覺效應觀察器Uzu iPad填補了電話與電腦之間的空白 到了這里,所有人都會贊成iPad并非大個頭的iPhone。很好,很高興你看到了本頁。現在有個更大的問題:iPad是筆記本電腦或臺式機的替代品嗎?不是,還不是,但iPad相當接近這個角色。 對許多人而言,iPad代表著填補智能手機和全功能電腦(不管是筆記本電腦還是臺式機)之間空白的移動設備。盡管很多人用iPad消遣,但iPad也能用來完成原本筆記本電腦或臺式機才能做的大量任務。這促使iOS開發者重新考慮怎樣實現傳世已久的軟件理念。字處理軟件正是其中的一種理念,它在iPad上找到了新生。 iPad開啟了由于iPhone尺寸太小而無法實現的廣闊應用程序之門。字處理軟件又一次成為人們想到的這種應用程序。 雖然iPhone很適合速記,但對寫冗長的文檔則不夠理想。盡管在技術上實現一個功能齊全的iPhone字處理軟件是可能的,但你會用嗎?屏幕太小了,即使是在橫向模式,在那么小的畫面上點動兩個手指效率仍舊很低。iPhone適合完成簡單、快速的任務,例如寫個便條、安排日程、將待辦事宜標為已做,但對于較長的任務,例如寫書的工作并不合適。 進入iPad iPad提供類似小型筆記本電腦的體驗。與無線鍵盤配合,iPad就成為編寫冗長文檔的良好工具。我是從體驗方面說的。本書的大量文本都出自iPad。我不能想象要是用iPhone會是什么樣子,但我知道iPad上是怎樣的,這樣做是種享受。它尤其出色的是,使你能專注于一個任務。這樣可以避免分神,讓你更好地專注于手頭的工作。 本書組織結構 顧名思義,本書將為你提供隨手指導。它將帶你走過iPad編程的每個階段,從下載安裝iOS SDK到向蘋果公司發布第一個應用程序供其審核,都囊括在內。 全書包括27章及一個附錄,如下所示: * 第一部分,“入門” 第一部分介紹了這一行業會用到的工具。這里你將學習諸如Xcode、Interface Builder等開發工具。學習如何使用Objective-C和Cocoa框架來編寫代碼。你還將學習怎樣配置信息,使iPad成為一臺開發設備。 ? 第1章,“你的第一個應用程序” 該章可幫助你即刻埋頭創建第一個應用程序。它為創建一個簡單但可用的iPad應用程序提供手把手的指導。該應用程序能夠運行于iPad模擬器上。你將使用Xcode創建此應用程序,這意味著要編寫少許代碼,但在書中的這個位置,還不需要你具備Objective-C知識。該章的目標是讓你立即掌握要用于創建iPad應用程序的工具和代碼。 ? 第2章,“Xcode入門” Xcode是開發者的集成開發環境(Integrated Development Environment,IDE),用來編寫iPad應用程序的Objective-C代碼。該章強調Xcode的關健特性,包括推薦的選項設置、常用的快捷鍵、使用Xcode時的各窗口說明。 ? 第3章,“Interface Builder入門” 該章將探究Interface Builder(即IB)。Interface Builder是個用來創建應用程序用戶界面的工具,不需要編程。此章解釋使用IB的方法,以及它的許多有用功能。此外,該章還會給出使用IB時常犯錯誤的警告,例如忘了將事件關聯至IBAction。 ? 第4章,“Objective-C入門” 該章介紹Objective-C,帶有選擇iPad編程可用語言的簡短綜述。該章不是意在對此編程語言作廣泛的講解,而是提供足夠的信息,使你能夠著手編寫第一個實際的iPad應用程序。 ? 第5章,“Cocoa入門” 編程語言只有在支持它的框架強大時才會表現強大,Cocoa提供了令人贊嘆的框架棧,以及一個庫,使得你構建iPad應用程序時能縮短時間。 ? 第6章,“為iPad配置信息” 在通往iPad精彩世界的道路上會有些驚險時刻。最嚇人的一個是信息提供概述、許可證和注冊測試用的設備。Xcode 4在此方面作了改進,但仍遠不夠完美。該章引導你經歷配置文件、許可證和設備注冊的驚險森林。 ? 第7章,“應用程序設計” 如果你不知道在構建什么,就無法構建應用程序。該章在你還未編寫一行代碼之前分享設計應用程序的竅門。 * 第二部分,“構建PhotoWheel” 第二部分是本書的核心。在此你將親手構建真實的iPad應用程序。你所構建的這個應用程序并非簡單的Hello World。它叫PhotoWheel,一個功能齊全的照片應用程序。在第二部分,你將學習從視圖轉換時的定制動畫到iCloud在電視上同步顯示照片等所有知識。 ? 第8章,“創建主從復合應用程序” 當著手構建PhotoWheel時,首先構建其原型。通過構建原型,你可借此機會學習主從復合應用程序里的分割視圖控制器。 ? 第9章,“使用表格視圖” 在該章中,你將使用表格視圖來學習顯示數據的基本知識。你還會學習怎樣重排序、刪除,甚至編輯表格視圖所顯示的數據。 ? 第10章,“用視圖工作” 在該章中,你將沉浸于視圖的世界。在此學習如何創建顯示照片的輪狀視圖。 ? 第11章,“使用觸屏手勢” 在該章中,你將學習怎樣利用iPad的多點觸屏。你會學習使用觸摸手勢,以便用戶能夠與你的應用程序交互。 ? 第12章,“添加照片” PhotoWheel是與照片相關的,所以很自然地你要了解將照片添加到應用程序的辦法。在該章,你會學習如何從Photos應用程序的庫里獲取照片,以及怎樣使用內置的攝像頭拍照得到照片。 ? 第13章,“數據持久化” 如果人們無法保存其工作,PhotoWheel就沒那么有用了。保存和獲取應用程序數據的方法有多種,這里會討論其中兩種,并學習使用Core Data。 ? 第14章,“Xcode中的故事板” 故事板是個設計應用程序用戶界面的新辦法,很討人喜歡。在該章,你將親手使用故事板,并學習怎樣使用Interface Builder以更少的代碼做更多的事。 ? 第15章,“視圖控制器詳解” 故事板的功能畢竟有限。在有些時候,必須編寫代碼才能使應用程序真正光彩照人。在該章你將學習充分利用視圖控制器的辦法。 ? 第16章,“構造主屏幕” 在該章中,你將對PhotoWheel進行深入編程。原型已經完成,你會有個替代故事板的基本用戶界面。現在該構建其主畫面了,這正是你在該章要做的事情。你還將學習怎樣使用容器視圖控制器,并構建定制柵格視圖以便可用到其他項目。 ? 第17章,“創建照片瀏覽器” 在該章中,你將學習使用滾動視圖的方法,創建全屏的照片瀏覽器。你還要了解怎樣使用二指撥動手勢來縮小和放大照片的顯示。 ? 第18章,“支持設備旋轉” 用戶期望無論怎樣手持iPad,應用程序都應顯示得當。用戶可能會在拿iPad時Home按鈕處于左邊或右邊,也可能在上邊或下邊。你的工作就是要確保不管什么情況,應用程序都要正確顯示。這就是你要在該章學習的內容:怎樣支持設備旋轉。 ? 第19章,“用AirPrint打印” 該章直奔要點,傳授怎樣使用AirPrint從應用程序中打印內容。 ? 第20章,“發送電子郵件” 現今時代幾乎每個人都有電子郵件賬號,每個人都喜歡看照片。所以PhotoWheel用戶自然會想通過電子郵件與家人或朋友分享照片。該章將介紹怎樣從應用程序中發送電子郵件。 ? 第21章,“Web服務” 將iPad上已有的照片添加到PhotoWheel固然不錯,但許多人還將照片保存到其他地方。該章將介紹怎樣在iPad應用程序與Web服務器間通信,以從Flickr上搜索和下載照片。 ? 第22章,“與iCloud同步” 很多人都有多臺iOS設備,要是能在所有設備間使用PhotoWheel共享同樣的數據就好了。同步難度很大,但有了iCloud就會容易多了。該章將添加照片和相冊的在線同步功能。 ? 第23章,“用AirPlay放映幻燈片” iPad有個大屏幕,但你也許想向一群人展示照片,而讓所有人圍著一個手持設備顯得不甚方便。該章將揭示怎樣利用外部的無線顯示器,例如可能的大型電視,從iPad應用程序讓其顯示內容。你將使用AirPlay實現,這樣就不用在房間里亂走線了。 ? 第24章,“Core Image的視覺特效” Core Image是分析和修改圖片的框架,由其可獲得令人吃驚的效果。即使顏色特效和自動照片增強技術難以做到,還可以使用Core Data Image定位照片中的人臉。可以在便捷的用戶界面中把這個功能加入PhotoWheel,以便人們在應用這些特效前預覽其效果。 * 第三部分,“最后的潤色” 在本書的最后一部分,你將學習調試應用程序的技巧。但更重要的是,你還將學會怎樣向別人發布你的應用程序。 ? 第25章,“調試” 在這個時候,你已經知道怎樣創建iPad應用程序了,但出了問題怎么辦呢?該章講述應用程序的調試,介紹GDB和展示如何打開、關閉斷點,以及怎樣利用聲音來調試。該章還會介紹更高級的調試技術,諸如使用Instruments來跟蹤內存泄漏。 ? 第26章,“發布應用程序” 應用程序已經編寫完畢,已經經過調試和測試。下一步就是將應用程序交到用戶手里。該章探討發布iPad應用程序的一些選項,介紹兩種最常用的發布方法:非正式發布和App Store發布。 ? 第27章,“結語” 該章以一些對iPad程序員的勵志話語結束本書。 * 附錄A,“安裝開發工具” 此附錄將帶你完成要開始iPad編程之前的那些步驟。包括設立iOS開發賬號,下載iOS SDK,以及在Mac計算機上安裝開發工具。 本書將你從應用程序設計一路帶到App Store。其間你將了解開發工具、編程語言和框架。而更重要的是,你將學會怎樣構建一個功能齊全的iPad應用程序,你可以拿這個應用程序進行炫耀。 本書讀者對象 本書面向對iOS平臺還不了解,但想學習如何編寫iPad應用程序的程序員。本書假定你是iPad編程新手,對Xcode和Objective-C沒有什么經驗。不過,本書認為你已有一些使用其他編程語言和工具的編程經驗。但那些沒有任何編程經驗的人不適合閱讀本書。 本書的目標讀者是想學習怎樣使用iOS 5開發iPad上復雜應用程序的程序員。你需要有一臺Mac計算機,以便可以使用Xcode和Interface Builder編程,并要有iPad的iOS開發賬號。要是有些編程經驗會很有益,特別是有C語言知識,盡管有一章會介紹怎樣用Objective-C進行面向對象的編程,讓你有個起步。 本書對有經驗的iOS開發者,即那些已經編寫過應用程序并將其發布到iPhone和iPod touch的人同樣有吸引力。如果你是經驗豐富的讀者,則可以跳過基礎章節,從而迅速進入貫穿本書的示例項目的創建中。 獲取PhotoWheel的源碼 PhotoWheel在每章及全部的源碼都可以從本書的網址:learnipadprogramming.com/source-code/下載。雖然本書介紹開發PhotoWheel的篇幅是有限的。但我們的學習是無止境的,我們對此應用程序還有大量工作可做,所以還有很多東西可學。最新的源碼可以在github(網頁為github.com/ kirbyt/PhotoWheel)處找到。 你還可以在本書的博客網址(learnipadprogramming.com/blog/)找到更多介紹方法和技巧的文章,來改進PhotoWheel。 如果你還有其他問題,或者想報告缺陷或向PhotoWheel提出新功能,請不吝發電子郵件至kirby@whitepeaksoftware.com或tph@atomicbird.com。也可以在Twitter上發消息給@kirbyt或@atomicbird。 本書隨處都有豐富的代碼,還有可供操練的練習題,所以本書假定你已經獲得了Xcode和iOS SDK等蘋果公司的開發工具。這些都可以從蘋果公司的iOS開發中心1下載。 插圖提供人 Matt McCray這個小伙子熱情洋溢地提供了PhotoWheel的插圖。如果你要找人為應用程序設計插圖,則可以與他聯絡。他的電子郵箱是matt@elucidata.net,其個人網站為:www.elucidata.net。 致謝 與寫作其他任何書一樣,在寫作過程中總是有許多人默默做出了貢獻。這里請允許我們花點時間表達對這些人的謝意…… Kirby Turner的致謝 首先感謝我的妻子Melanie和兒子Rowan,感謝他們的支持與耐心,讓我能集中精力完成本書的創作。感謝Tom在本書的最后階段答應成為我的合著者,要是沒有他的幫助,本書可能還會延誤更長時間。我要對Chuck Toporek致以最誠摯的謝意,是他給了我這個寫書的機會。當然了,我還要感謝那些技術審核人員以及產品開發團隊,他們在短期內做出了辛苦的工作。 還要特別感謝Daft Punk,他的TRON:Legacy相冊是本書大部分配套內容的原型。 感謝史蒂夫·喬布斯以及蘋果公司令人贊嘆不已的工程師,是你們把編程樂趣重新帶給了我。最后,感謝Mac和iOS開發社區。如果沒有這個獨特社區的熱情和精神,一切都不可能成真。 Tom Harrington的致謝 感謝Kirby邀請我參加本書的創作。特別感謝我們的技術審核者Chuck Toporek,以及產品團隊其他成員的辛勤勞動,才使本書得以高質量地交付印刷。我和Kirby是在iOS 5還在測試階段時著作本書的,我們再三發現在完稿前必須做些修訂,以趕上iOS和開發工具改變的步伐。所涉及的每個人在應對寫書時內容持續的變化都表現得很出色。 感謝蘋果公司每個致力于iOS 5和iPad開發的每個人。沒有他們,我們就無法將這么熱門的話題寫成書。 最后,在寫本書致謝時,我們才知道史蒂夫·喬布斯已經去世。他是蘋果公司長久而且非常成功的首席執行官。我在30年前就開始在Apple Ⅱ上編寫軟件了,它也奠定了我日后事業的基礎。謝謝你所做的一切,史蒂夫。 網址是developer.apple.com/ios。 |