基本介紹
- 書名:Swift從入門到精通
- 作者:張益琿
- 出版社:清華大學出版社
圖書簡介,圖書目錄,作者簡介,
圖書簡介
本書由專業的iOS開發工程師根據Swift3精心編撰,兼備核心語法、編程技巧與套用實踐3大主題。第一部分從Xcode開發工具及Swift學習環境的搭建開始,重點介紹Swift3的語言特性和套用場景,並提供了大量編程練習,幫助讀者儘快掌握Swift語言的精髓。第二部分介紹Swift開發iOS套用的基本技能,包括獨立UI控制項的套用、視圖界面邏輯的開發、動畫與布局技術、網路與數據處理技術等,旨在帶領讀者掌握獨立開發一款iOS應用程式的能力。第三部分為套用部分,這部分安排了3個實戰項目(簡易計算器、生活記事本、中國象棋遊戲),項目的安排有簡到難,旨在全面鍛鍊讀者的實際開發能力,使用Swift進行開發實踐。
通過本書的學習,讀者可以輕鬆地掌握使用Swift語言開發一款iOS軟體從理論到實踐的全部技術細節。本書適合使用Swift3開發iOS套用的新手,有Objective-C基礎想學習Swift3的iOS開發人員,也很適合用作培訓機構與大中專院校移動開發課程的教學參考書。
圖書目錄
第1部分 Swift語言基礎
第1章 學習環境的搭建 3
1.1 申請個人AppleID賬號 3
1.2 下載與安裝Xcode開發工具 4
1.3 Xcode開發工具簡介 5
1.4 使用Playground進行Swift代碼演練 9
第2章 量值與基本數據類型 10
2.1 變數與常量 10
2.1.1 變數與常量的定義和使用 11
2.1.2 變數和常量的命名規範 12
2.2 關於注釋 13
2.3 初識基本數據類型 13
2.3.1 數學進制與計算機存儲原理 14
2.3.2 整型數據 14
2.3.3 浮點型數據 15
2.3.4 布爾型數據 16
2.4 兩種特殊的基本數據類型 16
2.4.1 元組 16
2.4.2 可選值類型 17
2.5 為類型取別名 20
2.6 練習及解析 20
第3章 字元、字元串與集合類型 21
3.1 字元串類型 21
3.1.1 進行字元串的構造 21
3.1.2 字元串的組合 22
3.2 字元類型 23
3.2.1 字元類型簡介 23
3.2.2 轉義字元 24
3.3 字元串類型中的常用方法 24
3.4 集合類型 26
3.4.1 Array數組類型 27
3.4.2 Set集合類型 30
3.4.3 Dictionary字典類型 33
3.5 練習及解析 35
第4章 基本運算符與程式流程控制 38
4.1 初識運算符 38
4.1.1 賦值運算符 39
4.1.2 基本算...
4.1.3基本邏輯運算符40
4.1.4比較運算符41
4.1.5條件運算符41
4.2Swift語言中兩種特殊的運算符42
4.2.1空合併運算符42
4.2.2區間運算符43
4.3循環結構43
4.3.1for-in循環結構43
4.3.2while與repeat-while條件循環結構44
4.4條件選擇與多分支選擇結構46
4.4.1if與if-else條件選擇結構46
4.4.2switch-case多分支選擇結構46
4.5Swift語言中的流程跳轉語句49
4.6練習及解析52
第5章函式與閉包技術56
5.1函式的基本套用56
5.1.1函式的創建與調用57
5.1.2關於函式的參數名58
5.1.3函式中參數的默認值、不定數量參數與inout類型參數59
5.2函式的類型與函式嵌套61
5.3理解閉包結構63
5.3.1閉包的語法結構63
5.3.2通過實現一個排序函式來深入理解閉包63
5.4將閉包作為參數傳遞時的寫法最佳化66
5.5後置閉包、逃逸閉包與自動閉包67
5.6練習及解析68
第6章高級運算符與枚舉72
6.1位運算符與溢出運算符72
6.1.1位運算符的套用72
6.1.2溢出運算符74
6.2運算符的重載與自定義74
6.2.1重載運算符74
6.2.2自定義運算符76
6.3運算符的優先權與結合性77
6.4枚舉類型的創建與套用79
6.5枚舉的原始值與相關值81
6.5.1枚舉的原始值81
6.5.2枚舉的相關值82
6.5.3遞歸枚舉83
6.6練習及解析86
第7章類與結構體88
7.1類與結構體的定義88
7.1.1結構體88
7.1.2類90
7.2設計一個交通工具類91
7.3開發中類與結構體的套用場景94
7.4練習及解析95
第8章屬性與方法97
8.1存儲屬性與計算屬性97
8.1.1存儲屬性的意義及套用97
8.1.2計算屬性的意義及套用100
8.2屬性監聽器102
8.3實例屬性與類屬性103
8.4實例方法與類方法104
8.4.1實例方法的意義與套用104
8.4.2類方法105
8.5下標方法106
8.6練習及解析108
第9章構造方法與析構方法109
9.1構造方法的設計與使用109
9.2指定構造方法與便利構造方法112
9.3構造方法的繼承關係113
9.4構造方法的安全性檢查115
9.5可失敗構造方法與必要構造方法116
9.6析構方法117
9.7練習及解析118
第10章記憶體管理與異常處理120
10.1自動引用計數120
10.2循環引用及其解決方法123
10.3閉包中的循環引用128
10.4異常的拋出與傳遞129
10.5異常的捕獲與處理130
10.6延時執行結構131
10.7練習及解析132
第11章類型轉換、泛型、擴展與協定133
11.1類型檢查與轉換133
11.1.1Swift語言中的類型檢查134
11.1.2Swift語言中的類型轉換134
11.2Any與AnyObject類型135
11.3泛型137
11.3.1初識泛型137
11.3.2對泛型進行約束139
11.4擴展與協定141
11.4.1使用擴展對已經存在的數據類型進行補充141
11.4.2協定的特點與套用143
11.4.3協定與擴展的結合146
第2部分iOS開發基礎
第12章UI控制項與邏輯互動(1)148
12.1iOS項目工程簡介148
12.1.1創建iOS項目工程148
12.1.2運行第一個iOS程式150
12.2標籤控制項——UILabel151
12.2.1使用代碼創建一個UILabel控制項152
12.2.2自定義UILable控制項的展示效果152
12.2.3定義更加豐富多彩的UILabel控制項154
12.3按鈕控制項——UIButton155
12.3.1創建UIButton按鈕控制項155
12.3.2為按鈕添加觸發事件157
12.3.3為UIButton添加自定義圖片158
12.4圖片顯示控制項——UIImageView160
12.4.1圖片類UIImage160
12.4.2使用UIImageView進行圖片的展示160
12.4.3使用UIImageView播放動畫161
12.5文本輸入框控制項——UITextField162
12.5.1創建文本輸入框控制項162
12.5.2為UITextField設定左右視圖164
12.5.3UITextField控制項的代理方法165
12.6開關控制項UISwitch168
12.7分頁控制器——UIPageControl169
12.8分部控制器——UISegmentedControl170
12.8.1創建分布控制器控制項170
12.8.2UISegmentedControl控制項中按鈕的增刪改操作171
12.8.3關於UISegmentedControl控制項中按鈕的尺寸問題172
第13章UI控制項與邏輯互動(2)173
13.1滑塊控制項UISlider173
13.1.1UISlider控制項的創建與設定173
13.1.2UISlider控制項的外觀自定義與用戶互動174
13.2活動指示器UIActivityIndicatorView176
13.3進度條控制項UIProgressView177
13.4步進器UIStepper178
13.5選擇器控制項UIPickerView180
13.6時間選擇器UIDataPicker183
13.7搜尋欄控制項UISearchBar186
13.7.1創建UISearchBar控制項186
13.7.2UISearchBar控制項的更多功能按鈕188
13.7.3UISearchBar控制項的附屬檔案視圖189
13.7.4UISearchBarDelegate協定詳解190
第14章視圖控制器與高級UI視圖控制項192
14.1應用程式的界面管理器UIViewController192
14.1.1關於MVC設計模式192
14.1.2UIViewController的生命周期193
14.1.3UIViewController之間的切換與傳值195
14.2導航視圖控制器UINavigationController200
14.2.1理解導航結構201
14.2.2搭建使用導航結構的項目201
14.2.3對導航欄進行自定義設定203
14.2.4使用導航進行視圖控制器的切換管理205
14.3標籤欄控制器UITabBarController207
14.3.1創建以UITabBarController為項目結構工程207
14.3.2對UITabBarController中的標籤進行自定義配置210
14.3.3標籤欄上標籤的溢出與排序功能212
14.4警告視圖控制器的套用214
14.4.1認識UIAlertAction類214
14.4.2使用UIAlertController創建警告框彈窗215
14.4.3使用UIAlertController創建抽屜彈窗217
14.5網頁視圖的套用218
14.5.1網頁視圖UIWebView218
14.5.2認識WebKit框架221
14.5.3使用WKWebViewConfiguration對網頁視圖進行配置222
14.5.4WKWebView中重要屬性和方法解析225
14.5.5關於WKUIDelegate協定226
14.6滾動視圖UIScrollView的套用227
14.6.1創建UIScrollView滾動視圖227
14.6.2UIScrollViewDelegate協定介紹228
14.6.3UIScrollView的縮放操作230
14.7列表視圖UITableView的套用231
14.7.1創建UITableView列表231
14.7.2進行數據載體UITableViewCell的自定義235
14.7.3UITableView的編輯模式238
14.7.4為UITableView添加索引欄242
14.8集合視圖UICollectionView的套用243
14.8.1使用UICollectionView實現簡單的九宮格布局243
14.8.2使用FlowLayout進行更加靈活的九宮格布局245
14.8.3實現炫酷的瀑布流布局247
14.9分頁控制器UIPageViewController的套用251
14.9.1創建一個UIPageViewController工程251
14.9.2關於UIPageViewControllerDelegate的更多套用255
第15章動畫與界面布局技術259
15.1使用UIView層動畫實現屬性漸變效果259
15.1.1UIView層的屬性過渡動畫259
15.1.2UIView層的轉場動畫263
15.2通過GIF檔案播放動畫265
15.2.1使用原生的UIImageView來播放GIF動態圖265
15.2.2使用UIWebView來進行GIF動態圖的播放267
15.3iOS開發中的CoreAnimation核心動畫技術268
15.3.1初識CoreAnimation框架268
15.3.2錨點對視圖幾何屬性的影響268
15.3.3幾種常用的CALayer子類介紹269
15.3.4CoreAnimation框架中的屬性動畫介紹273
15.3.5CoreAnimation框架中的轉場動畫與組合動畫274
15.4炫酷的粒子效果276
15.4.1粒子發射引擎與粒子單元276
15.4.2創建火焰粒子效果279
15.5Autolayout自動布局技術281
15.5.1使用storyboard或者xib檔案進行界面的自動布局281
15.5.2進行視圖間的約束布局284
15.5.3使用原生代碼進行Autolayout自動布局285
15.5.4使用第三方框架SnapKit進行Autolayout自動布局288
15.6使用Autolayout創建自適應高度的UITextView輸入框289
第16章網路與數據存儲技術292
16.1獲取網際網路上公開API所提供的數據292
16.1.1註冊APIStore會員292
16.1.2進行API接口測試293
16.1.3關於JSON數據格式294
16.2在iOS開發中進行網路數據請求295
16.2.1關於HTTP網路請求協定295
16.2.2使用URLSesstion進行網路請求296
16.3使用UserDefaults進行簡單數據的持久化存儲298
16.3.1使用UserDefaults與Plist檔案進行常見類型數據的存儲298
16.3.2使用Plist檔案進行數據持久化處理300
16.4iOS開發中的歸檔技術套用302
16.4.1對簡單數據類型的歸檔操作302
16.4.2對自定義數據類型進行歸檔操作304
16.5資料庫在iOS開發中的套用305
16.5.1運算元據庫常用語句305
16.5.2可視化資料庫管理工具MesaSQLite的簡單套用308
16.5.3libsqlite3資料庫操作庫簡介310
16.5.4在iOS工程中調用libsqlite3庫運算元據庫312
16.6使用CoreData框架進行數據管理315
16.6.1使用CoreData框架進行數據模型設計315
16.6.2使用CoreData進行數據的添加與查詢操作317
第3部分項目實戰
第17章實戰一:簡易計算器321
17.1計算器按鍵與操作面板的封裝321
17.2計算器顯示板輸入顯示的邏輯開發324
17.3計算器計算邏輯的設計329
17.4為套用添加圖示與啟動頁332
第18章實戰二:點滴生活記事本334
18.1項目工程的搭建334
18.2主頁記事分組視圖的開發337
18.3添加分組功能的開發340
18.4資料庫引入與記事分組信息的持久化342
18.5記事列表界面的搭建346
18.6新建記事功能的開發349
18.7更新記事與刪除記事功能的開發355
第19章實戰三:《中國象棋》遊戲359
19.1項目工程的搭建與音頻模組的開發359
19.2《中國象棋》棋子控制項的開發363
19.3《中國象棋》棋盤控制項的開發366
19.4“兵”與“卒”行棋邏輯的開發371
19.5“將”與“士”相關棋子行棋邏輯的開發379
19.6“象”與“馬”相關棋子行棋邏輯的開發381
19.7“車”與“炮”棋子行棋邏輯的開發387
19.8勝負判定邏輯開發與遊戲功能完善392
19.9拆分冗長的checkCanMove()方法398
附錄ACocoaPods庫管理工具的套用406
附錄B關鍵概念檢索表409
作者簡介
張益琿 軟體開發工程師,擁有多年iOS開發經驗,曾開發iOS平台系列——遊戲瘋狂越獄1~2、套用物通配貨軟體、VIPExam考試庫、證券財經軟體等,現就職於中國唯品會。2016年出版著作《 iOS開發實戰:從零基礎到AppStore上架 》。