iOS 開發實戰 : 從入門到上架 App Store, 2/e

張益琿

買這商品的人也買了...

商品描述

本書站在開發者的視角,以iOS 10+Xcode 8和Objective-C+Swift 3雙語言代碼示例,完整地介紹了iOS應用程序從開發到上架的全過程,包含iOS應用開發的各種熱點技術和編者多年的開發經驗分享。

全書共11章,包括:開發環境搭建、界面開發、傳感器技術、佈局與動畫技術、網絡和數據技術、打包與上傳發布流程等,基本上每一章都配備了實戰範例,使讀者可以在編寫代碼中學習編程,在應用開發中提高開發技能。

本書技術先進,註重實戰,示例豐富,適合iOS開發新手使用,也很適合作為iOS培訓機構的教材或大專院校軟件開發課程的教學參考書。

海報:

作者簡介

張益琿(網名:琿少)

工學學士,軟件開發工程師,多年iOS開發經驗,曾開發iOS平台系列遊戲:瘋狂越獄1~2、應用物通配貨軟件、VIPExam考試庫、證券財經軟件等,現就職於中國唯品會,出版著作《iOS開發實戰:從零基礎到App Store上架》(清華大學出版社,2016年出版)。

目錄大綱

第1章開發準備1 
1.1 iOS 10新特性簡述2 
1.1.1新增觸覺反饋編程接口2 
1.1.2 SiriKit框架的開放4 
1.1.3引入Messages App 5 
1.1.4通知框架的整合與擴展6 
1.2熟悉iOS開發環境6 
1.2.1安裝Xcode開發工具6 
1.2.2了解Xcode開發工具主界面8 
1.2.3 Xcode開發工具的使用技巧及常用快捷鍵9 
1.3創建第一個iOS項目10 
1.4使用Git進行項目版本管理13 
1.4.1 Git與Github簡介13 
1.4.2註冊GitHub會員13 
1.4.3使用Xcode創建Git倉庫15 
1.4.4用Xcode建立本地Git倉庫與GitHub代碼託管平台的關聯16 

第2章基礎UI控件18 
2.1 iOS系統UI框架的介紹19 
2.1.1 MVC設計模式19 
2.1.2代理設計模式20 
2.2視圖控制器——UIViewController 20 
2.2.1 UIViewController的生命週期20 
2.2.2 UIViewController的視圖層級結構27
2.3文本控件——UILabel 27 
2.3.1使用UILabel在屏幕上創建一個標籤控件27 
2.3.2自定義標籤控件的相關屬性28 
2.3.3多行顯示的UILabel與換行模式30 
2.4按鈕控件——UIButton 32 
2.4.1創建一個按鈕改變屏幕顏色32 
2.4.2更加多彩的UIButton控件35 
2.5文本輸入框控件——UITextField 37 
2.5.1在屏幕上創建一個輸入框37 
2.5.2 UITextField的常用屬性介紹39 
2.5. 3 UITextField的代理方法40 
2.5.4實現一個監聽輸入信息的用戶名輸入框41 
2.6開關控件——UISwitch 43 
2.6.1創建一個開關控件43 
2.6.2為UISiwtch控件添加觸發方法44 
2.7分頁控制器— —UIPageControl 45 
2.8分段控制器——UISegmentedControl 46 
2.8.1 UISegmentedControl基本屬性的應用46 
2.8.2對UISegmentedControl中的按鈕進行增、刪、改操作48 
2.8.3 UISegmentedControl中按鈕寬度的自適應48
2.9滑塊控件——UISlider 49 
2.9.1 UISlider的創建與常規設置49 
2.9.2對UISlider添加圖片修飾51 
2.10活動指示器控件—— UIActivityIndi​​catorView 51 
2.11進度條控件——UIProgressView 53 
2.12步進控制器— —UIStepper 53 
2.12.1步進控制器的基本屬性使用54 
2.12.2自定義UIStepper按鈕圖片55 
2.13選擇器控件——UIPickerView 56 
2.13.1創建一個UIPickerView控件56 
2.13.2 UIPickerView選中數據時的回調代理58 
2.14通過CALayer對視圖進行修飾59 
2.14.1創建圓角的控件59 
2.14.2創建帶邊框的控件60 
2.14.3為控件添加陰影效果60 
2.15警告控制器——UIAlertController 61 
2.15.1 UIAlertController的警告框61 
2.15.2 UIAlertController之活動列表64 
2.16擴展篇65 
2.16.1搜索欄控件——UISearchBar 65 
2.16.2日期時間選擇器—— UIDatePicker 69
2.16.3警告視圖——UIAlertView 71 
2.16.4活動列表——UIActionSheet 72 
2.17實戰:登錄註冊界面的搭建73 

第3章高級UI控件80 
3.1導航控制器——UINavigationController 81 
3.1.1導航控制器的工作原理81 
3.1.2使用導航控制器進行多界面搭建82 
3.1.3導航欄UINavigationBar 85 
3.1.4導航按鈕UIBarButtonItem 87 
3.1.5導航控制器的工具欄90 
3.1.6 iOS 8之後導航控制器的一些有趣功能91 
3.2標籤控制器——UITabBarController 92 
3.2.1標籤控制器的工作原理92 
3.2.2標籤控制器的基礎用法解析92 
3.2.3關於UITabBarItem的使用94 
3.3滾動視圖——UIScrollView 96 
3.3.1使用UIScrollView展示視圖內容96 
3.3.2 UIScrollView的代理方法98 
3.4網絡視圖——UIWebView 101 
3.4.1 App網絡傳輸安全策略101 
3.4.2通過網絡請求加載UIWebView 102
3.4.3通過HTML字符串加載UIWebView 103 
3.4.4通過NSData數據加載UIWebView 104 
3.4.5 UIWebView中常用方法解析104 
3.4.6 UIWebView的代理方法106 
3.5表格視圖——UITableView 107 
3.5.1 UITableView的創建與復用機制107 
3.5.2創建一個表格視圖UITableView 108 
3.5.3關於表格數據的載體UITableViewCell 111 
3.5.4設置UITableView的行高和頭尾視圖113 
3.5.5 UITableView的用戶交互行為115 
3.5.6為UITableView添加索引欄118 
3.6複雜佈局視圖——UICollectionView 119 
3.6.1 UICollectionView控件的優勢與佈局方式119 
3.6.2使用UICollectionView進行九宮格式的佈局119 
3.6.3創建更加靈活的流式佈局122 
3.6.4自定義UICollectionViewFlowLayout進行參差瀑布流佈局123 
3.6.5使用UICollectionView進行圓環佈局128
3.7實戰:開發一款手機網頁瀏覽器133 
3.7.1網頁瀏覽器工程的搭建133 
3.7.2核心網頁視圖的設計135 
3.7.3歷史記錄界面的設計147 
3.7.4收藏界面的設計151 
3.7.5啟動頁面、圖標及應用名稱的
相關優化154 

第4章網絡編程157 
4.1使用NSURLConnection請求網絡數據158 
4.1.1申請一個免費的API服務158 
4.1.2使用NSURLConnection進行API 服務數據的獲取161 
4.1.3使用NSURLConnection進行異步網絡請求162 
4.1.4使用NSURLConnection類通過代理回調的方式異步進行網絡請求164 
4.2設計封裝一個更加易用的網絡請求類165 
4.2.1設計自定義的網絡請求連接類166 
4.2.2設計自定義的網絡請求管理類167 
4.3 JSON類型數據的解析與數據模型的設計171 
4.3.1 JSON數據簡介171 
4.3.2在iOS中解析JSON數據173 
4.3.3數據模型Model類的設計175 
4.4使用CocoaPods進行第三方庫的管理180
4.4.1在MAC上安裝CocoaPods 180 
4.4.2用CocoaPods搭建一個使用第三方網絡請求框架AFNetworking的工程182 
4.5使用AFNetworking進行網絡請求184 
4.5.1詳解HTTP/HTTPS協議184 
4.5.2使用AFNetworking進行網絡請求185 
4.6實戰:開發“笑一笑”應用程序188 
4.6.1工程項目框架的搭建188 
4.6.2 “笑一笑”界面數據載體cell的設計190 
4.6.3 “笑一笑”界面的搭建193 
4.6.4實現下拉刷新與加載更多功能200 
4.6.5 “趣圖吧”界面數據載體cell的設計203 
4.6.6 “趣圖吧”界面的設計207 

第5章音頻、視頻開發216 
5.1 iOS音頻開發基礎—— AVAudioPlayer 類的使用217 
5.1.1使用AVAudioPlayer進行MP3 音頻文件的播放217 
5.1.2進行音頻播放相關屬性的控制218 
5.1.3後台播放音頻及用戶交互的優化225 
5.2 iOS視頻開發基礎229 
5.2.1使用MPMoviePlayerController向應用中嵌入視頻模塊230 
5.2.2 MPMoviePlayerController常用簡性與方法解析231 
5.3視頻播放器視圖控制器—— MPMoviePlayerViewController 236 
5.4 AVPlayerViewController視頻播放框架與畫中畫開發技術238 
5.4.1使用AVPlayerViewController 進行視頻播放238 
5.4 .2 iPad的畫中畫播放技術241 
5.5實戰:“歌手王菲”音頻播放器的開發244 
5.5.1工程搭建與LRC歌詞文件簡介244 
5.5.2 LRC歌詞解析引擎的設計245 
5.5.3核心播放器引擎的設計253 
5.5.4歌曲列表與歌詞顯示視圖界面的設計265 
5.5.5播放器主頁面的實現274 
5.5.6後台播放音頻用戶交互的處理285 

第6章動畫開發288 
6.1使用UIImageView播放圖片組幀動畫289 
6.2 UIView層動畫的應用290 
6.2.1執行UIView層過渡動畫的3個類方法290 
6.2.2創建UIView層的阻尼動畫293
6.2.3動畫參數配置與組合動畫293 
6.2.4 UIView層過渡動畫支持的屬性297 
6.3使用commit方式進行UIView層動畫的創建298 
6.3.1使用commit方式進行UIView層過渡動畫的創建298 
6.3.2兩種UIView層動畫創建方式的優劣300 
6.4 UIView的轉場動畫300 
6.4.1重繪UIView視圖時使用的轉場動畫300 
6.4.2切換UIView視圖時使用的轉場動畫302 
6.5核心動畫編程技術— —CoreAnimation 303 
6.5.1錨點對視圖控件幾何位置的影響303 
6.5.2色彩梯度層—— CAGradientLayer 304 
6.5.3視圖拷貝層—— CAReplicatorLayer 305 
6.5.4圖形渲染層—— CAShapeLayer 307 
6.5.5文本繪製層——CATextLayer 309 
6.5.6 CAAnimation動畫體系介紹310 
6.5.7使用CABasicAnimation創建基礎動畫312 
6.5.8使用CAKeyframeAnimation類創建關鍵幀動畫316 
6.5.9 CALayer層的轉場動畫—— CATransition 317 
6.5.10 CALayer層的組合動畫—— CAAnimationGroup 320 
6.5.11 CATransform3D變換的應用321 
6.6炫酷的粒子效果324 
6.6.1粒子發射器—— CAEmitterLayer 324 
6.6.2粒子單元——CAEmitterCell 327 
6.6.3創建粒子火焰動畫330 
6.7播放GIF動態圖332 
6.7.1使用UIWebView進行GIF動態圖播放332 
6.7.2使用UIImageView幀動畫進行GIF動態圖播放334 
6.8實戰:小遊戲Flappy Bird的設計與開發336 
6.8.1小鳥對象的設計336 
6.8.2遊戲開始界面的設計341 
6.8.3遊戲結束界面的設計344 
6.8.4 Flappy Bird遊戲主框架的搭建347 

第7章傳感器開發360 
7.1為應用程序添加手機密碼及指紋識別的安全驗證361 
7.1.1使用手機密碼為應用程序添加安全驗證361
7.1.2使用用戶指紋為應用程序添加安全驗證363 
7.2使用加速度傳感器、螺旋儀傳感器與磁力傳感器獲取設備空間狀態364 
7.2.1使用UIAccelerometer獲取設備空間狀態364 
7.2.2使用CoreMotion框架獲取設備空間狀態信息365 
7.3距離傳感器的應用371 
7.4 iOS藍牙開發技術373 
7.4.1中心設備管理CBCentralManager 374 
7.4.2外圍設備管理類CBPeripheralManager 382 
7.5 GPS應用與地圖編程技術388 
7.5.1進行設備地理位置定位388 
7.5. 2原生地圖開發技術392 
7.5.3在地圖中添加大頭針及標註395 
7.5.4在地圖視圖中添加覆蓋物398 
7.5.5在地圖中進行線路導航與附近興趣點檢索402 
7.6實戰:簡易藍牙對戰五子棋410 
7.6.1遊戲核心通信類的設計410 
7.6.2棋盤瓦片的設計427 
7.6.3核心遊戲視圖與遊戲核心邏輯的設計430 
7.6.4核心遊戲視圖控制器的設計448 

第8章界面佈局454
8.1 iOS中傳統的UIViewAutoresizing佈局模式455 
8.1.1通過代碼設置視圖控件的UIViewAutoresizing模式455 
8.1.2在xib文件中可視化地配置控件的autoresizing屬性457 
8.2 autolayout自動佈局框架459 
8.2.1初識autolayout 459 
8.2 .2 autolayout的屬性意義與一個簡單的自動佈局示例461 
8.2.3使用Objective-C風格的方法進行代碼autolayout佈局464 
8.2.4使用格式化的字符串進行autolayout佈局對象的創建467 
8.2.5與約束相關的幾個方法470 
8.2.6使用autolayout設計一個高度自適應的聊天輸入框和動畫優化470 
8.2.7使用第三方庫Masonry進行autolayout的約束佈局474 

第9章數據持久化482 
9.1使用plist文件進行輕量級數據持久化管理483 
9.1.1在工程中讀取plist文件數據483 
9.1.2在程序沙盒Doucments目錄中創建和使用plist文件485 
9.1.3使用NSUserDefaults類進行數據持久化486 
9.2使用歸檔技術進行數據模型持久化489 
9.2.1進行單一系統數據類型的歸檔與解歸檔操作489 
9.2.2對多個對象進行數據歸檔491 
9.2.3進行自定義數據模型的歸檔492 
9.3小型數據庫SQLite在iOS開發中的應用495 
9.3.1 SQLite數據庫常用語法介紹495 
9.3.2使用iOS原生框架sqlite3對SQLite數據庫進行操作497 
9.4核心數據管理框架CoreData的使用501 
9.4.1使用CoreData設計數據模型502 
9.4.2 CoreData編程框架中3個重要的類504 
9.4.3 CoreData編程框架的數據操作510 
9.4.4使用CoreData進行數據與頁面的綁定516 
9.5網絡緩存策略524 
9.5.1為網絡請求設置緩存策略524 
9.5.2應用緩存管理類NSURLCache簡介525
 
第10章提交應用程序到AppStore 527 
10.1使用Xcode開發工具進行程序調試528 
10.1.1使用自定義斷點進行代碼調試528 
10.1.2添加全局異常斷點529
10.1.3使用LLDB調試器進行程序調試530 
10.2 Apple開發者賬號的申請531 
10.2.1幾種類型的開發者賬號531 
10.2.2申請開發者賬號的過程531 
10.3進行應用程序的打包534 
10.3.1在iTunes Connect中進行應用的創建與配置534 
10.3.2使用Xcode打包與提交iTunes 541 

第11章更多功能與進階技巧545 
11.1 Objective-C中block語法的應用546 
11.1.1聲明與實現block語法塊546 
11.1.2 block代碼塊中訪問對象的微妙關係547 
11.2 iOS通知中心NSNotificationCenter的應用548 
11.2.1通知類NSNotification簡介549 
11.2.2通知中心NSNotificationCenter的應用549 
11.3多線程開發技術550 
11.3.1使用NSThread進行線程管理550 
11.3.2使用NSOperation類與NSOperationQueue類進行多任務管理552 
11.3.3 iOS中GCD編程技術簡介556