本書(shū)作者琿少在中國唯品會(huì )做過(guò)多年iOS開(kāi)發(fā),擁有豐富的開(kāi)發(fā)經(jīng)驗,這本書(shū)是作者琿少在工作之余,利用周末和晚上的時(shí)間完成的,傾注了作者半年多的心血,在此對琿少這種無(wú)私樂(lè )于分享的精神表示敬意。
這本書(shū)從零基礎開(kāi)始,介紹了iOS開(kāi)發(fā)產(chǎn)品的全過(guò)程,在講解敘述上盡量使用了非常簡(jiǎn)潔、通俗易懂的語(yǔ)言,非常容易上手和看懂學(xué)會(huì )。
在講解的過(guò)程中使用了大量示例和圖示來(lái)表述,結合開(kāi)發(fā)經(jīng)驗、技巧和詳盡的代碼注解,同時(shí)在各章配合項目開(kāi)發(fā),讀者可以邊學(xué)邊練,盡快掌握實(shí)用的開(kāi)發(fā)技能。
作者還為本書(shū)錄制了iOS UI 設計的視頻教學(xué)課程,詳細地講解了App UI設計開(kāi)發(fā)的核心內容,視頻播放時(shí)長(cháng)超過(guò)13個(gè)小時(shí),同時(shí)提供了全書(shū)的源代碼,非常超值。
這是一本專(zhuān)業(yè)且易于學(xué)習的iOS開(kāi)發(fā)實(shí)戰書(shū),我認為這本書(shū)非常值得一讀,特別是對于從來(lái)沒(méi)有開(kāi)發(fā)過(guò)iOS App產(chǎn)品的讀者將會(huì )有很大幫助。
《iOS開(kāi)發(fā)實(shí)戰:從零基礎到App Store上架》一書(shū)由一線(xiàn)軟件工程師結合實(shí)際應用編寫(xiě)而成,由淺入深系統地介紹了iOS應用從開(kāi)發(fā)、調試到打包、上架的完整過(guò)程。本書(shū)主體由各個(gè)基礎模塊組成,由實(shí)戰項目連接,在幫助讀者掌握原理的同時(shí)輕松上手開(kāi)發(fā)出自己的應用。
為方便讀者學(xué)習,作者還為本書(shū)精心錄制了“7天玩轉iOS UI開(kāi)發(fā)視頻教程”,本視頻教程包括基礎篇、中級篇、高級篇、進(jìn)階篇、擴展篇5部分,總計36堂課,播放時(shí)長(cháng)超過(guò)13小時(shí)。此外,本書(shū)還提供iOS UI開(kāi)發(fā)視頻教程源代碼以及本書(shū)實(shí)例源代碼。
本書(shū)的特色是通俗易學(xué),突出實(shí)戰,提供了大量開(kāi)發(fā)案例,適合于剛入職或新手iOS開(kāi)發(fā)人員和愛(ài)好者、大中專(zhuān)院校學(xué)生及iOS培訓班學(xué)員,尤其適合有一定語(yǔ)言基礎想要開(kāi)發(fā)App產(chǎn)品的開(kāi)發(fā)者。
張益琿,軟件開(kāi)發(fā)工程師,擁有多年iOS開(kāi)發(fā)經(jīng)驗,曾開(kāi)發(fā)iOS平臺系列——游戲瘋狂越獄1~2、應用物通配貨軟件、VIPExam考試庫、證券財經(jīng)軟件等,現就職于中國唯品會(huì )。
第1章 開(kāi)發(fā)準備 1
1.1 iOS 9新特性簡(jiǎn)述 2
1.1.1 新增壓力傳感器編程接口 2
1.1.2 全新的搜索功能API 2
1.1.3 更小、更快——全新的應用瘦身策略 3
1.1.4 使用更加安全的網(wǎng)絡(luò )傳輸協(xié)議 4
1.2 熟悉iOS開(kāi)發(fā)環(huán)境 4
1.2.1 安裝Xcode開(kāi)發(fā)工具 4
1.2.2 了解Xcode開(kāi)發(fā)工具主界面 6
1.2.3 Xcode開(kāi)發(fā)工具的使用技巧及常用快捷鍵 7
1.3 創(chuàng )建第一個(gè)iOS項目 8
1.4 使用Git進(jìn)行項目版本管理 13
1.4.1 Git與Github簡(jiǎn)介 13
1.4.2 注冊GitHub會(huì )員 13
1.4.3 使用Xcode創(chuàng )建Git倉庫 14
1.4.4 用Xcode建立本地Git倉庫與GitHub代碼托管平臺的聯(lián)系 16
第2章 基礎UI控件 19
2.1 iOS系統UI框架的介紹 20
2.1.1 MVC設計模式 20
2.1.2 代理設計模式 21
2.2 視圖控制器——UIViewController 21
2.2.1 UIViewController的生命周期 21
2.2.2 UIViewController的視圖層級結構 25
2.3 文本控件——UILabel 25
2.3.1 使用UILabel在屏幕上創(chuàng )建一個(gè)標簽控件 26
2.3.2 自定義標簽控件的相關(guān)屬性 26
2.3.3 多行顯示的UILabel與換行模式 27
2.4 按鈕控件——UIButton 29
2.4.1 創(chuàng )建一個(gè)按鈕來(lái)改變屏幕顏色 29
2.4.2 更加多彩的UIButton控件 32
2.5 文本輸入框控件——UITextField 33
2.5.1 在屏幕上創(chuàng )建一個(gè)輸入框 33
2.5.2 UITextField的常用屬性介紹 35
2.5.3 UITextField的代理方法 36
2.5.4 實(shí)現一個(gè)監聽(tīng)輸入信息的用戶(hù)名輸入框 37
2.6 開(kāi)關(guān)控件——UISwitch 38
2.6.1 創(chuàng )建一個(gè)開(kāi)關(guān)控件 38
2.6.2 為UISiwtch控件添加觸發(fā)方法 39
2.7 分頁(yè)控制器——UIPageControl 40
2.8 分段控制器——UISegmentedControl 41
2.8.1 UISegmentControl基本屬性的應用 41
2.8.2 對UISegmentedControl中的按鈕進(jìn)行增、刪、改操作 42
2.8.3 UISegmentedControl中按鈕寬度的自適應 43
2.9 滑塊控件——UISlider 43
2.9.1 UISlider的創(chuàng )建與常規設置 44
2.9.2 對UISlider添加圖片修飾 45
2.10 活動(dòng)指示器控件——UIActivityIndicatorView 45
2.11 進(jìn)度條控件——UIProgressView 47
2.12 步進(jìn)控制器——UIStepper 48
2.12.1 步進(jìn)控制器的基本屬性使用 48
2.12.2 自定義UIStepper按鈕圖片 49
2.13 選擇器控件——UIPickerView 49
2.13.1 創(chuàng )建一個(gè)UIPickerView控件 50
2.13.2 UIPickerView選中數據時(shí)的回調代理 51
2.14 通過(guò)CALayer對視圖進(jìn)行修飾 52
2.14.1 創(chuàng )建圓角的控件 52
2.14.2 創(chuàng )建帶邊框的控件 52
2.14.3 為控件添加陰影效果 53
2.15 警告控制器——UIAlertController 54
2.15.1 UIAlertController的警告框 54
2.15.2 UIAlertController之活動(dòng)列表 56
2.16 擴展篇 57
2.16.1 搜索欄控件——UISearchBar 57
2.16.2 日期時(shí)間選擇器——UIDatePicker 59
2.16.3 警告視圖——UIAlertView 61
2.16.4 活動(dòng)列表——UIActionSheet 62
2.17 實(shí)戰:登錄注冊界面的搭建 62
第3章 高級UI控件 68
3.1 導航控制器——UINavigationController 69
3.1.1 導航控制器的工作原理 69
3.1.2 使用導航控制器進(jìn)行多界面搭建 70
3.1.3 導航欄UINavigationBar 73
3.1.4 導航按鈕UIBarButtonItem 74
3.1.5 導航控制器的工具欄 77
3.1.6 iOS 8之后導航控制器的一些有趣功能 77
3.2 標簽控制器——UITabBarController 78
3.2.1 標簽控制器的工作原理 78
3.2.2 標簽控制器的基礎用法解析 78
3.2.3 關(guān)于UITabBarItem的使用 80
3.3 滾動(dòng)視圖——UIScrollView 81
3.3.1 使用UIScrollView展示視圖內容 81
3.3.2 UIScrollView的代理方法 83
3.4 網(wǎng)絡(luò )視圖——UIWebView 84
3.4.1 App網(wǎng)絡(luò )傳輸安全策略 85
3.4.2 通過(guò)網(wǎng)絡(luò )請求加載UIWebView 86
3.4.3 通過(guò)HTML字符串加載UIWebView 86
3.4.4 通過(guò)NSData數據加載UIWebView 87
3.4.5 UIWebView中常用方法解析 88
3.4.6 UIWebView的代理方法 89
3.5 表格視圖——UITableView 90
3.5.1 UITableView的創(chuàng )建與復用機制 90
3.5.2 創(chuàng )建一個(gè)表格視圖UITableView 91
3.5.3 關(guān)于表格數據的載體UITableViewCell 93
3.5.4 設置UITableView的行高和頭尾視圖 95
3.5.5 UITableView的用戶(hù)交互行為 96
3.5.6 為UITableView添加索引欄 99
3.6 復雜布局視圖——UICollectionView 99
3.6.1 UICollectionView控件的優(yōu)勢與布局方式 100
3.6.2 使用UICollectionView進(jìn)行九宮格式的布局 100
3.6.3 創(chuàng )建更加靈活的流式布局 102
3.6.4 自定義UICollectionViewFlowLayout進(jìn)行參差瀑布流布局 103
3.6.5 使用UICollectionView進(jìn)行圓環(huán)布局 106
3.7 實(shí)戰:開(kāi)發(fā)一款手機網(wǎng)頁(yè)瀏覽器 109
3.7.1 網(wǎng)頁(yè)瀏覽器工程的搭建 110
3.7.2 核心網(wǎng)頁(yè)視圖的設計 111
3.7.3 歷史記錄界面的設計 119
3.7.4 收藏界面的設計 122
3.7.5 啟動(dòng)頁(yè)面、圖標及應用名稱(chēng)的相關(guān)優(yōu)化 124
第4章 網(wǎng)絡(luò )編程 127
4.1 使用NSURLConnection請求網(wǎng)絡(luò )數據 128
4.1.1 申請一個(gè)免費的API服務(wù) 128
4.1.2 使用NSURLConnection進(jìn)行API服務(wù)數據的獲取 131
4.1.3 使用NSURLConnection進(jìn)行異步網(wǎng)絡(luò )請求 132
4.1.4 使用NSURLConnection類(lèi)通過(guò)代理回調的方式異步進(jìn)行網(wǎng)絡(luò )請求 134
4.2 設計封裝一個(gè)更加易用的網(wǎng)絡(luò )請求類(lèi) 135
4.2.1 設計自定義的網(wǎng)絡(luò )請求連接類(lèi) 135
4.2.2 設計自定義的網(wǎng)絡(luò )請求連接管理類(lèi) 136
4.3 JSON類(lèi)型數據的解析與數據模型的設計 139
4.3.1 JSON數據簡(jiǎn)介 139
4.3.2 在iOS中解析JSON數據 141
4.3.3 數據模型Model類(lèi)的設計 142
4.4 使用CocoaPods進(jìn)行第三方庫的管理 146
4.4.1 在MAC上安裝CocoaPods 146
4.4.2 用CocoaPods搭建一個(gè)使用第三方網(wǎng)絡(luò )請求框架AFNetworking的工程 148
4.5 使用AFNetworking進(jìn)行網(wǎng)絡(luò )請求 150
4.5.1 詳解HTTP/HTTPS協(xié)議 150
4.5.2 使用AFNetworking進(jìn)行網(wǎng)絡(luò )請求 151
4.6 實(shí)戰:開(kāi)發(fā)“笑一笑”應用程序 153
4.6.1 工程項目框架的搭建 154
4.6.2 “笑一笑”界面數據載體cell的設計 155
4.6.3 “笑一笑”界面的搭建 157
4.6.4 實(shí)現下拉刷新與加載更多功能 162
4.6.5 “趣圖吧”界面數據載體cell的設計 164
4.6.6 “趣圖吧”界面的設計 167
第5章 音視頻開(kāi)發(fā) 172
5.1 iOS音頻開(kāi)發(fā)基礎——AVAudioPlayer類(lèi)的使用 173
5.1.1 使用AVAudioPlayer進(jìn)行MP3音頻文件的播放 173
5.1.2 進(jìn)行音頻播放相關(guān)屬性的控制 175
5.1.3 后臺播放音頻及用戶(hù)交互的優(yōu)化 180
5.2 iOS視頻開(kāi)發(fā)基礎 184
5.2.1 使用MPMoviePlayerController向應用中嵌入視頻模塊 184
5.2.2 MPMoviePlayerController常用屬性與方法解析 185
5.3 視頻播放器視圖控制器——MPMoviePlayerViewController 189
5.4 AVPlayerViewController視頻播放框架與畫(huà)中畫(huà)開(kāi)發(fā)技術(shù) 191
5.4.1 使用AVPlayerViewController進(jìn)行視頻播放 191
5.4.2 iPad的畫(huà)中畫(huà)播放技術(shù) 193
5.5 實(shí)戰:“天后王菲”音頻播放器的開(kāi)發(fā) 195
5.5.1 工程搭建與LRC歌詞文件簡(jiǎn)介 196
5.5.2 LRC歌詞解析引擎的設計 197
5.5.3 核心播放器引擎的設計 201
5.5.4 歌曲列表與歌詞顯示視圖界面的設計 208
5.5.5 播放器主頁(yè)面的實(shí)現 213
5.5.6 后臺播放音頻用戶(hù)交互的處理 219
第6章 動(dòng)畫(huà)開(kāi)發(fā) 221
6.1 使用UIImageView播放圖片組幀動(dòng)畫(huà) 222
6.2 UIView層動(dòng)畫(huà)的應用 223
6.2.1 執行UIView層過(guò)渡動(dòng)畫(huà)的三個(gè)類(lèi)方法 223
6.2.2 創(chuàng )建UIView層的阻尼動(dòng)畫(huà) 225
6.2.3 動(dòng)畫(huà)參數配置與組合動(dòng)畫(huà) 225
6.2.4 UIView層過(guò)渡動(dòng)畫(huà)支持的屬性 227
6.3 使用commit方式進(jìn)行UIView層動(dòng)畫(huà)的創(chuàng )建 228
6.3.1 使用commit方式進(jìn)行UIView層過(guò)渡動(dòng)畫(huà)的創(chuàng )建 228
6.3.2 兩種UIView層動(dòng)畫(huà)創(chuàng )建方式的優(yōu)劣 230
6.4 UIView的轉場(chǎng)動(dòng)畫(huà) 230
6.4.1 重繪UIView視圖時(shí)使用的轉場(chǎng)動(dòng)畫(huà) 230
6.4.2 切換UIView視圖時(shí)使用的轉場(chǎng)動(dòng)畫(huà) 231
6.5 核心動(dòng)畫(huà)編程技術(shù)——CoreAnimation 232
6.5.1 錨點(diǎn)對視圖控件幾何位置的影響 233
6.5.2 色彩梯度層——CAGradientLayer 234
6.5.3 視圖拷貝層——CAReplicatorLayer 235
6.5.4 圖形渲染層——CAShapeLayer 236
6.5.5 文本繪制層——CATextLayer 237
6.5.6 CAAnimation動(dòng)畫(huà)體系介紹 238
6.5.7 使用CABasicAnimation創(chuàng )建基礎動(dòng)畫(huà) 240
6.5.8 使用CAKeyframeAnimation類(lèi)創(chuàng )建關(guān)鍵幀動(dòng)畫(huà) 242
6.5.9 CALayer層的轉場(chǎng)動(dòng)畫(huà)——CATransition 243
6.5.10 CALayer層的組合動(dòng)畫(huà)——CAAnimationGroup 245
6.5.11 CATransform3D變換的應用 246
6.6 炫酷的粒子效果 248
6.6.1 粒子發(fā)射器——CAEmitterLayer 248
6.6.2 粒子單元——CAEmitterCell 250
6.6.3 創(chuàng )建粒子火焰動(dòng)畫(huà) 251
6.7 播放GIF動(dòng)態(tài)圖 253
6.7.1 使用UIWebView進(jìn)行GIF動(dòng)態(tài)圖播放 253
6.7.2 使用UIImageView幀動(dòng)畫(huà)進(jìn)行GIF動(dòng)態(tài)圖播放 254
6.8 實(shí)戰:小游戲Flappy Bird的設計與開(kāi)發(fā) 256
6.8.1 小鳥(niǎo)對象的設計 257
6.8.2 游戲開(kāi)始界面的設計 259
6.8.3 游戲結束界面的設計 261
6.8.4 Flappy Bird游戲主框架的搭建 262
第7章 傳感器開(kāi)發(fā) 270
7.1 為應用程序添加手機密碼及指紋識別的安全驗證 271
7.1.1 使用手機密碼為應用程序添加安全驗證 271
7.1.2 使用用戶(hù)指紋為應用程序添加安全驗證 273
7.2 使用加速度傳感器、螺旋儀傳感器與磁力傳感器獲取設備空間狀態(tài) 274
7.2.1 使用UIAccelerometer獲取設備空間狀態(tài) 274
7.2.2 使用CoreMotion框架獲取設備空間狀態(tài)信息 275
7.3 距離傳感器的應用 278
7.4 iOS藍牙開(kāi)發(fā)技術(shù) 279
7.4.1 中心設備管理類(lèi)CBCentralManager 280
7.4.2 外圍設備管理類(lèi)CBPeripheralManager 285
7.5 GPS應用與地圖編程技術(shù) 289
7.5.1 進(jìn)行設備地理位置定位 289
7.5.2 原生地圖開(kāi)發(fā)技術(shù) 292
7.5.3 在地圖中添加大頭針及標注 294
7.5.4 在地圖視圖中添加覆蓋物 297
7.5.5 在地圖中進(jìn)行線(xiàn)路導航與附近興趣點(diǎn)檢索 299
7.6 實(shí)戰:簡(jiǎn)易藍牙對戰五子棋 304
7.6.1 游戲核心通信類(lèi)的設計 304
7.6.2 棋盤(pán)瓦片的設計 314
7.6.3 核心游戲視圖與游戲核心邏輯的設計 315
7.6.4 核心游戲視圖控制器的設計 325
第8章 界面布局 329
8.1 iOS中傳統的UIViewAutoresizing布局模式 330
8.1.1 通過(guò)代碼來(lái)設置視圖控件的UIViewAutoresizing模式 330
8.1.2 在xib文件中可視化地配置控件的autoresizing屬性 332
8.2 Autolayout自動(dòng)布局框架 333
8.2.1 初識Autolayout 334
8.2.2 Autolayout的屬性意義與一個(gè)簡(jiǎn)單的自動(dòng)布局示例 335
8.2.3 使用Objective-C風(fēng)格的方法進(jìn)行代碼Autolayout布局 338
8.2.4 使用格式化的字符串進(jìn)行Autolayout布局對象的創(chuàng )建 341
8.2.5 與約束相關(guān)的幾個(gè)方法 343
8.2.6 使用Autolayout設計一個(gè)高度自適應的聊天輸入框及動(dòng)畫(huà)優(yōu)化 343
8.2.7 使用第三方庫Masonry進(jìn)行Autolayout約束布局 345
第9章 數據持久化 351
9.1 使用plist文件進(jìn)行輕量級數據持久化管理 352
9.1.1 在工程中讀取plist文件數據 352
9.1.2 在程序沙盒Doucments目錄中創(chuàng )建和使用plist文件 353
9.1.3 使用NSUserDefaults類(lèi)進(jìn)行數據持久化 354
9.2 使用歸檔技術(shù)進(jìn)行數據模型持久化 356
9.2.1 進(jìn)行單一系統數據類(lèi)型的歸檔與解歸檔操作 356
9.2.2 對多個(gè)對象進(jìn)行數據歸檔 357
9.2.3 進(jìn)行自定義數據模型的歸檔 358
9.3 小型數據庫SQLite在iOS開(kāi)發(fā)中的應用 360
9.3.1 SQLite數據庫常用語(yǔ)法介紹 360
9.3.2 使用iOS原生框架sqlite3對SQLite數據庫進(jìn)行操作 362
9.4 核心數據管理框架CoreData的使用 367
9.4.1 使用CoreData設計數據模型 367
9.4.2 CoreData編程框架中3個(gè)重要的類(lèi) 370