本書以構(gòu)建一個仿Instagram項目的實踐案例貫穿全書,將所有知識點融入到實踐當(dāng)中,使大家真正理解和掌握如何通過XcodeSDK和Swift3.0語言來開發(fā)iOS應(yīng)用程序。除了書中所涉及的程序代碼以外,本書還配套推出了相應(yīng)的UI設(shè)計視頻,并通過二維碼的形式供廣大讀者觀看。全書共分37章。第1~10章的內(nèi)容實現(xiàn)的是Instagram基本的功能。第11~18章實現(xiàn)個人用戶和訪客頁面的相關(guān)功能。第19~25章實現(xiàn)的是個人配置頁面及發(fā)布頁面的功能。第26~32章實現(xiàn)了帖子評論功能。第33~37章實現(xiàn)了Instagram的集合頁面,搜索及通知功能。各個部分的功能實現(xiàn)都基于由淺入深,循序漸進(jìn)的原則,讓廣大讀者在實踐操作的過程中不知不覺的學(xué)習(xí)新方法,掌握新技能。
Preface?前 言為什么要寫這本書目前,不管是在京東、淘寶、當(dāng)當(dāng)還是亞馬遜,所有市面上銷售的符合Swift 3.0語法的iOS開發(fā)書籍屈指可數(shù)。即便有也是基于Swift 3.0語言的幾個常用知識點,分章節(jié)進(jìn)行傳統(tǒng)式講授,比如Swift基本語法、控制流、函數(shù)和閉包等。如果再找一本Swift 2.0的相關(guān)書籍,從目錄可以發(fā)現(xiàn)它們之間的區(qū)別并不大。這也就意味著,如果你已經(jīng)掌握了Swift 2.0,就沒有必要再去買一本Swift 3.0的語法書去學(xué)習(xí)它們之間的不同,因為這些大部分只是形式層面上的不同。 作為一名iOS開發(fā)程序員,如果掌握了Swift語法知識以后,接下來便是需要通過積累項目實戰(zhàn)經(jīng)驗來提升自己的等級了。而這一過程的重點是在完成項目需求的“一條線、一個面”上,而不是在“某個點”上面。因此,這個項目必須是一個接近完美的產(chǎn)品,它要可以訪問后臺數(shù)據(jù)庫,具有社交功能,可以添加關(guān)注和“被粉”,可以注冊用戶,實現(xiàn)登錄和退出,通過注冊的郵箱修改密碼,發(fā)送信息到后臺服務(wù)器的數(shù)據(jù)庫,可以通過相冊發(fā)布帖子照片,可以評論、@其他用戶和提交主題標(biāo)簽,當(dāng)有新消息的時候還可以通知當(dāng)前用戶。基于這樣的考慮,本書以國外較為流行的照片分享應(yīng)用程序——Instagram為例,實現(xiàn)了從用戶注冊、登錄到照片發(fā)布、評論、主題標(biāo)簽和@mention等一系列功能,讓廣大讀者可以通過本書將所學(xué)到的知識點運用到實戰(zhàn)中去,擺脫紙上談兵,真正地將所有的知識點融會貫通,從而打通所有“脈絡(luò)”,在編寫程序代碼的時候達(dá)到“思如泉涌”的效果。 本書的主要內(nèi)容和特色在筆者讀過的很多技術(shù)書籍中,絕大部分都是每個章節(jié)介紹一個技能,并且通過一個相對獨立的實例來進(jìn)行講解。例子雖然短小,容易理解,但是所有章節(jié)沒有任何關(guān)聯(lián),使讀者缺乏開發(fā)一個真正完整項目的體驗。 本書以構(gòu)建一個仿Instagram項目的實踐案例貫穿全書,將所有知識點融入到實踐中,使大家真正理解和掌握如何通過Xcode SDK和Swift 3.0語言來開發(fā)iOS應(yīng)用程序。 除了書中所涉及的程序代碼以外,本書還配套推出了相應(yīng)的UI設(shè)計視頻,并通過二維碼的形式供廣大讀者觀看。這樣做的目的:一是因為通過視頻方式講解UI界面的制作過程會更加生動形象,易于讀者的學(xué)習(xí)與實踐;二是可以節(jié)省很多紙張來進(jìn)行文字性描述和貼圖,更加環(huán)保;最后一點就是閱讀本書的讀者大部分都是程序員,本身對于美工方面的技能并不是很精通,但多了解一些也沒有什么壞處,不至于在團(tuán)隊交流的時候被“忽悠”了。基于這三點考慮,筆者錄制了相應(yīng)UI界面的制作視頻,可以讓程序員在編寫代碼的時候,開開心心制作UI界面。 本書是根據(jù)應(yīng)用程序項目所實現(xiàn)的功能安排章節(jié)的,具體如下: 第一部分(第1~10章)實現(xiàn)的是Instagram最基本的功能,包括:在iOS項目中集成LeanCloud SDK,實現(xiàn)用戶的注冊、登錄和密碼重置功能,UI界面的搭建與布局。 第二部分(第11~18章)實現(xiàn)個人用戶和訪客頁面的相關(guān)功能,包括:個人用戶和訪客的頁面UI搭建,從LeanCloud云端獲取個人信息,關(guān)注和被粉信息等。 第三部分(第19~25章)實現(xiàn)的是個人配置頁面及發(fā)布頁面的功能,包括:個人配置頁面的數(shù)據(jù)接收與提交,帖子照片的上傳,分頁載入,帖子單元格的布局等。 第四部分(第26~32章)實現(xiàn)了帖子評論功能,包括:創(chuàng)建評論界面,創(chuàng)建主題標(biāo)簽和@mention功能等。 第五部分(第33~37章)實現(xiàn)了Instagram的集合頁面,搜索及通知功能。 各個部分的功能實現(xiàn)都基于由淺入深、循序漸進(jìn)的原則,讓廣大讀者在實踐操作的過程中不知不覺地學(xué)習(xí)新方法,掌握新技能。 本書面向的讀者本書適合具備以下幾方面知識和硬件條件的群體閱讀。 有面向?qū)ο蟮拈_發(fā)經(jīng)驗,熟悉類、實例、方法、封裝、繼承、重寫等概念。 有Objective-C或Swift的開發(fā)經(jīng)驗。 有MVC設(shè)計模式開發(fā)經(jīng)驗。 有簡單圖像處理的經(jīng)驗。 有一臺Intel架構(gòu)的Mac電腦(Macbook Pro、Macbook Air、Mac Pro或Mac Mini)。 如果加入了iOS開發(fā)者計劃,還可以準(zhǔn)備一臺iOS移動設(shè)備。 如何閱讀本書每個人的閱讀習(xí)慣都不相同,而且本書并不是一本從Swift語法講起的基礎(chǔ)“開荒”書。所以我還是建議你先找一本Swift 2.X的語法書學(xué)起,在有了一定的Swift語言基礎(chǔ)以后,再開始閱讀本書,跟著實踐操作一步步完成Instagram項目。 在閱讀本書的過程中,我們可能會遇到語法錯誤、編譯錯誤、網(wǎng)絡(luò)連接錯誤等情況,不用著急,根據(jù)調(diào)試控制臺中的錯誤提示,去分析產(chǎn)生Bug的原因,或者通過與本書所提供的源碼進(jìn)行對比,找出問題所在。 本書采用循序漸進(jìn)的方式,這也就意味著在第5章出現(xiàn)的知識點,有可能在第12章還會出現(xiàn)。這樣就可以使廣大讀者有機會多次去學(xué)習(xí)和鞏固該知識點所能夠解決的問題,效果會更好。 勘誤和支持由于水平有限,編寫時間倉促,書中難免會出現(xiàn)一些錯誤或者不準(zhǔn)確的地方,懇請讀者批評指正。書中的全部源文件可以從華章網(wǎng)站(www.hzbook.com)下載。如果你有更多的寶貴意見,也歡迎發(fā)送郵件至郵箱liuming_cn@qq.com,期待能夠得到你們的真摯反饋。 致謝首先要感謝偉大到可以改變這個世界的Steven Jobs,他的精神對我產(chǎn)生了非常大的影響。 感謝機械工業(yè)出版社華章公司的編輯楊福川老師,在這段時間中始終支持我的寫作,你的鼓勵和幫助引導(dǎo)我順利完成全部書稿。 最后感謝我的爸爸、媽媽、劉穎、劉懷羽、張燕、盧紅玲,感謝你們對我的支持與幫助,并時時刻刻給我信心和力量! 謹(jǐn)以此書獻(xiàn)給我最親愛的家人,以及眾多熱愛iOS的朋友們! 劉銘2016年12月于中國北京
劉銘 iOS技術(shù)專家,從事軟件開發(fā)十余年,在iOS開發(fā)方面積累了豐富的實戰(zhàn)經(jīng)驗。在Cocoachina、CSDN等專業(yè)社區(qū)發(fā)表了大量技術(shù)文章,有一定的影響力。此外,他還擅長PHP和AS開發(fā),有7年的Web應(yīng)用開發(fā)經(jīng)驗。2011年在電子工業(yè)出版社出版了《iPhone程序開發(fā)基礎(chǔ)教程》一書,有一定的寫作經(jīng)驗。
目 錄?Contents前 言第一部分第1章 創(chuàng)建項目并集成LeanCloud SDK 21.1 訪問LeanCloud 31.2 創(chuàng)建Xcode項目——Instagram 41.3 將LeanCloud SDK集成到iOS項目中 51.4 初始化 LeanCloud SDK 7本章小結(jié) 10第2章 創(chuàng)建用戶登錄界面 112.1 從故事板中創(chuàng)建視圖 112.2 搭建用戶的登錄界面 132.3 為SignInVC類和視圖創(chuàng)建Outlet和Action關(guān)聯(lián) 162.3.1 什么是Outlet和Action 162.3.2 為SignInVC創(chuàng)建Outlet 172.3.3 為SignInVC創(chuàng)建Action 202.4 調(diào)整模擬設(shè)備 22本章小結(jié) 22第3章 創(chuàng)建用戶注冊界面 233.1 利用滾動視圖創(chuàng)建用戶注冊界面 233.2 創(chuàng)建Outlet和Action關(guān)聯(lián) 263.3 讓注冊視圖消失 29本章小結(jié) 30第4章 注冊視圖中編寫與界面相關(guān)的代碼 314.1 獲取當(dāng)前屏幕的尺寸 314.2 添加鍵盤相關(guān)的Notification通知 334.3 Swift語言中的可選特性 354.4 以動畫的方式改變滾動視圖的高度 394.5 通過Tap手勢讓虛擬鍵盤消失 40本章小結(jié) 41第5章 設(shè)置注冊頁面的用戶頭像 425.1 為Image View添加單擊手勢識別 425.2 創(chuàng)建照片獲取器 435.3 訪問照片庫的前期準(zhǔn)備 455.4 將Image View的外觀設(shè)置為圓形 47本章小結(jié) 48第6章 提交用戶注冊信息到LeanCloud 496.1 檢驗用戶輸入的數(shù)據(jù) 496.2 if語句中對可選鏈的處理 506.3 使用UIAlertController顯示警告信息 506.4 提交數(shù)據(jù)到LeanCloud平臺 526.5 在LeanCloud云端查看提交的信息 54本章小結(jié) 55第7章 用戶登錄 567.1 利用UserDefaults存儲用戶信息 567.2 SignInVC中的用戶登錄 60本章小結(jié) 61第8章 創(chuàng)建項目并集成LeanCloud SDK 628.1 刪除已經(jīng)安裝到模擬器中的App 628.2 創(chuàng)建密碼重置頁面的視圖 638.3 完成重置控制器代碼 65本章小結(jié) 66第9章 調(diào)整注冊和登錄界面的布局 679.1 通過Size Classes查看界面布局在不同設(shè)備上的效果 679.2 對登錄界面布局 689.3 對注冊界面布局 709.4 對密碼重置界面布局 72本章小結(jié) 72第10章 美化Instagram 7310.1 添加字體 7310.2 設(shè)置各功能視圖的背景圖 7410.3 注冊用戶的郵箱校驗 77本章小結(jié) 78第二部分第11章 創(chuàng)建Home Page用戶界面 8011.1 在故事板中搭建集合視圖 8011.2 為集合視圖創(chuàng)建代碼類 8311.3 添加Outlet和Action 8411.4 調(diào)整集合單元格 85本章小結(jié) 87第12章 從云端讀取當(dāng)前用戶信息 8812.1 創(chuàng)建個人主頁與標(biāo)簽控制器的關(guān)聯(lián) 8812.2 修改HomeVC的代碼 8912.3 應(yīng)用程序傳輸安全協(xié)議 9312.4 設(shè)置導(dǎo)航欄標(biāo)題 94本章小結(jié) 95第13章 在個人主頁中顯示帖子信息 9613.1 在LeanCloud云端創(chuàng)建數(shù)據(jù)類 9613.2 編寫接收數(shù)據(jù)的代碼 9913.3 創(chuàng)建單元格相關(guān)代碼 102本章小結(jié) 105第14章 獲取用戶的帖子及關(guān)注數(shù) 10614.1 注冊后的用戶登錄 10614.2 在云端創(chuàng)建關(guān)注記錄 10814.3 獲取用戶相關(guān)數(shù)據(jù)信息 110本章小結(jié) 111第15章 與統(tǒng)計數(shù)據(jù)之間的交互 11215.1 在故事板中創(chuàng)建表格視圖控制器 11215.2 創(chuàng)建Outlet關(guān)聯(lián) 11315.3 統(tǒng)計數(shù)據(jù)被單擊后的實現(xiàn)代碼 115本章小結(jié) 118第16章 從云端載入關(guān)注人員信息 11916.1 從云端獲取關(guān)注人員信息 11916.2 創(chuàng)建表格視圖的單元格 12016.3 設(shè)置關(guān)注按鈕的狀態(tài) 12216.4 添加關(guān)注和取消關(guān)注 125本章小結(jié) 127第17章 創(chuàng)建訪客的相關(guān)功能 12817.1 在故事板中創(chuàng)建用戶界面 12817.2 實現(xiàn)GuestVC類的代碼 12917.3 從云端獲取訪客的帖子信息 13217.4 獲取訪客個人頁面的Header信息 13417.5 單擊訪客統(tǒng)計數(shù)據(jù)后的實現(xiàn)代碼 13617.6 從其他控制器切換到GuestVC 13817.7 對于訪客的關(guān)注和取消關(guān)注 140本章小結(jié) 141第18章 設(shè)置訪客頁面的布局 14218.1 用戶的退出 14218.2 設(shè)置HeaderView的布局 14318.3 設(shè)置集合視圖單元格的大小 14518.4 關(guān)注頁面的布局 146本章小結(jié) 147第三部分第19章 創(chuàng)建用戶配置界面 15019.1 在故事板中創(chuàng)建個人配置控制器視圖 15019.2 創(chuàng)建Action和Outlet關(guān)聯(lián) 15419.3 為視圖創(chuàng)建布局代碼 15519.4 實現(xiàn)與界面相關(guān)的代碼 158本章小結(jié) 162第20章 個人配置頁面數(shù)據(jù)的接收與提交 16320.1 從云端獲取個人用戶信息 16320.2 對Email和Web進(jìn)行正則判斷 16420.3 發(fā)送信息到服務(wù)器 16720.4 更新個人主頁信息 169本章小結(jié) 170第21章 實現(xiàn)帖子上傳功能 17121.1 在故事板中創(chuàng)建上傳用戶界面 17121.2 創(chuàng)建上傳控制器代碼類 17321.3 實現(xiàn)照片獲取器的相關(guān)代碼 17421.4 實現(xiàn)上傳的相關(guān)代碼 17721.5 在個人主頁刷新集合視圖 17921.6 移除上傳頁面中的照片 181本章小結(jié) 183第22章 實現(xiàn)分頁載入功能 18422.1 為HomeVC實現(xiàn)分頁載入功能 18422.2 為GuestVC實現(xiàn)分頁載入功能 187本章小結(jié) 187第23