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