使用Xcode 12 & iOS 14 & Swift 5開發
掌握廣受歡迎的Swift教學內容
快速強化你的iOS App開發實戰能力
逐步實作出具有精美UI、實用功能及支援雲端資料傳輸的「FoodPin」App
| 了解最新版Xcode開發工具 | 快速學習Swift App程式編寫、物件導向和MVC程式設計 | 實作動態視覺效果 | 使用原型儲存格、差異性資料源與深色模式自訂表格視圖 | 運用Core Data和CloudKit存取資料 | 使用第三方套件 | App本地化 | 開發使用者通知 | App測試和上架程序 |
作者公開多年來的iOS開發經驗,並集結廣受歡迎的iOS教學文章,以Swift 5.3與Xcode 12重新編寫,精心設計出30個章節,由基礎入門開始,逐步實作出具有精美UI及實用功能、支援雲端資料傳輸和深色模式的「FoodPin」App,而且「FoodPin」App完全支援新推出的iOS 14以及iPhone 12/12 Pro、iPad Pro。
本書首先介紹Swift語言的觀念,並學習規劃App的原型,然後每章針對iOS開發的各個面向提供了提示與技巧,以及許多需要親手操作的練習,最後你可從無到有來開發出一個真正的App。本書將會教導你如何使用Xcode來佈局使用者介面,並熟悉iOS 14 SDK的基本API。跟著本書內容學習,將可獲得真實開發App的體驗,並打好Swift程式語言的基礎,掌握住程式開發的訣竅。
本書是為了Swift與iOS程式設計的初學者而撰寫,不論你是想學習新程式語言的程式設計師,或是想要將你的設計轉換為iOS App的設計師,這本書絕對是你的首選。
【本書精采內容】
☛Swift基礎介紹。
☛利用Playground快速學習Swift。
☛使用Swift從無到有打造第一個App。
☛學習App原型設計與前置規劃。
☛建立App的常用元件。
☛了解自動佈局與堆疊視圖建立自適應UI。
☛不可不學的安全區域觀念。
☛設計適合所有螢幕尺寸的App,讓UI相容iPhone 12/12 Pro和iPad Pro。
☛設計導覽列大標題。
☛自訂表格視圖儲存格來打造更優雅的App。
☛學習使用差異性資料來源更新表格資料。
☛建立導覽控制器與Segue的基礎觀念。
☛了解物件導向程式設計和MVC開發方法。
☛建立動畫與視覺效果。
☛使用靜態表格視圖與照片庫。
☛運用地圖並學會最新的標註功能。
☛使用搜尋列做關鍵字搜尋。
☛建立導覽畫面來讓使用者迅速熟悉App。
☛建立與運用標籤列。
☛在App嵌入瀏覽器與網頁視圖。
☛運用使用者通知來提升App黏著度。
☛運用3D觸控、觸覺觸控及內容選單。
☛儲存資料至資料庫。
☛整合運用CloudKit。
☛App多國語系化。
☛在實機上部署與測試App,並學會最新的WiFi部署功能。
☛使用TestFlight安排Beta測試。
☛在App Store上架你的App。
作者簡介:
Simon Ng
軟體工程師&AppCoda創辦人。畢業於香港中文大學電子工程系,曾任職於HSBC、FedEx等公司,專責軟體開發、系統設計。2012年創立AppCoda技術部落格,定期發表iOS程式教學文章,其部落格每月吸引20多萬名讀者點閱。現在致力於iOS程式教學、產品設計及開發,希望幫助更多人進入iOS的程式世界。
【英文網站】
www.appcoda.com
【中文網站】
www.appcoda.com.tw
【AppCoda開發者社群】
facebook.com/groups/appcodatw
目錄
|CHAPTER 01| 開發工具、學習方法與App點子
1.1 開發App的所需工具
1.2 學習App的方式
1.3 發想App好點子
1.4 本章小結
|CHAPTER 02| 使用Playground來首次體驗Swift
2.1 開始學習Swift
2.2 在Playground中測試Swift
2.3 常數與變數
2.4 了解型別推論
2.5 文字的處理
2.6 流程控制
2.7 了解陣列與字典
2.8 了解可選型別
2.9 玩玩UI
2.10 下一章的主題
|CHAPTER 03| Hello World!使用Swift建立第一個App
3.1 你的第一個App
3.2 開始建立專案
3.3 熟悉Xcode工作區
3.4 第一次執行你的App
3.5 快速演練介面建構器
3.6 設計使用者介面
3.7 為Hello World按鈕加上程式碼
3.8 使用者介面與程式碼間的連結
3.9 測試你的App
3.10 變更按鈕顏色
3.11 你的作業:繼續修改專案
3.12 下一章的主題
|CHAPTER 04| 進階說明Hello World App的原理
4.1 了解實作與介面
4.2 觸控背後
4.3 深入了解showMessage方法
4.4 使用者介面與程式碼的關係
4.5 UIViewController與視圖控制器的生命週期
4.6 「執行」按鈕背後的動作原理
4.7 本章小結
|CHAPTER 05| 自動佈局介紹
5.1 為何要自動佈局?
5.2 自動佈局和約束條件息息相關
5.3 在介面建構器即時預覽
5.4 使用自動佈局將按鈕置中
5.5 解決佈局約束條件問題
5.6 預覽故事板的另一種方式
5.7 加入標籤
5.8 安全區域
5.9 編輯約束條件
5.10 你的作業:加入表情符號標籤
5.11 本章小結
|CHAPTER 06| 使用堆疊視圖設計UI
6.1 堆疊視圖是什麼?
6.2 範例App
6.3 建立新專案
6.4 加入圖片至Xcode專案
6.5 使用堆疊視圖佈局標題標籤
6.6 使用堆疊視圖佈局圖片
6.7 對堆疊視圖定義佈局約束條件
6.8 在圖片下方加入標籤
6.9 使用堆疊視圖佈局按鈕
6.10 使用尺寸類別調整堆疊視圖
6.11 保存向量資料
6.12 你的作業:建立佈局特規、加入標籤
6.13 本章小結
|CHAPTER 07| 原型設計
7.1 在紙上繪出你的App點子
7.2 繪出App線框圖
7.3 使你的草圖/線框圖可互動
7.4 常用的原型設計工具
7.5 本章小結
|CHAPTER 08| 建立簡單的表格式App
8.1 建立一個SimpleTable專案
8.2 設計使用者介面
8.3 執行App迅速測試
8.4 UITableView 與協定
8.5 陣列新手教學
8.6 連結DataSource與Delegate
8.7 測試你的表格式App
8.8 在表格視圖中加入縮圖
8.9 隱藏狀態列.
8.10 你的作業:各個儲存格顯示不同的圖片
8.11 本章小結
|CHAPTER 09| 使用原型儲存格、差異性資料來源與深色模式自訂表格視圖
9.1 使用UITableViewController 與UITableViewDiffableDataSource建立表格視圖App
9.2 顯示不同的縮圖
9.3 自訂表格視圖儲存格
9.4 在介面建構器中設計原型儲存格
9.5 為自訂儲存格建立類別
9.6 建立連結
9.7 更新儲存格提供者
9.8 圖片圓角化
9.9 使用深色模式測試App
9.10 你的作業:修復問題並重新設計自訂表格
9.11 本章小結
|CHAPTER 10| 使用UIAlertController顯示提示並處理表格視圖選取
10.1 建立更優雅的儲存格佈局
10.2 查閱文件
10.3 實作協定來管理列的選取
10.4 了解UIAlertController
10.5 對提示控制器加入動作
10.6 遇到錯誤
10.7 使用iPad執行App
10.8 在iPad上遇到另一個錯誤
10.9 你的作業:取消勾選與使用其他圖示
10.10 本章小結
|CHAPTER 11| 物件導向程式設計、組織專案與程式碼說明文件
11.1 物件導向程式設計的基礎理論
11.2 類別、物件及實例
11.3 結構
11.4 複習FoodPin專案
11.5 建立Restaurant結構
11.6 初始化器的說明
11.7 self關鍵字
11.8 預設初始化器
11.9 使用Restaurant物件的陣列
11.10 組織你的Xcode專案檔
11.11 以註解來記錄與組織Swift程式碼
11.12 本章小結
11.13 進階參考文獻
|CHAPTER 12| 表格列刪除、滑動動作、動態控制器與MVC
12.1 淺談模型-視圖-控制器
12.2 了解模型-視圖-控制器
12.3 在UITableView刪除列
12.4 啟用滑動刪除功能
12.5 使用快照從表格視圖刪除列資料
12.6 使用UIContextualAction滑動帶出其他動作
12.7 SF Symbols介紹
12.8 自訂UIContextualAction
12.9 在iPad上測試
12.10 你的作業:實作向右滑動
12.11 本章小結
|CHAPTER 13| 導覽控制器與Segue
13.1 故事板中的場景及Segue
13.2 建立導覽控制器
13.3 導覽列大標題
13.4 加入細節視圖控制器
13.5 建立細節視圖控制器的新類別
13.6 為自訂類別加入變數
13.7 使用Segue傳送資料
13.8 停用大標題
13.9 你的作業:加入更多的餐廳資訊
13.10 本章小結
|CHAPTER 14| 改善細節視圖、自訂字型與自適應儲存格
14.1 了解起始專案
14.2 使用自訂字型
14.3 設計表格視圖頭部
14.4 了解圖片視圖的縮放
14.5 修復問題
14.6 餐廳名稱被截掉
14.7 使用UIView調暗圖片
14.8 對動態型別使用自訂字型
14.9 設計原型儲存格
14.10 更新RestaurantDetailViewController類別
14.11 準備測試
14.12 自訂表格視圖分隔符號
14.13 了解自適應儲存格
14.14 本章小結
|CHAPTER 15| 自訂導覽列、深色模式與動態型別
15.1 自訂導覽列
15.2 滑動隱藏導覽列
15.3 作業①:修正導覽列的錯誤
15.4 Swift擴展
15.5 為深色模式調整顏色
15.6 變更狀態列的樣式
15.7 動態型別
15.8 作業②:解決問題
15.9 本章小結
|CHAPTER 16| 運用地圖
16.1 使用MapKit框架
16.2 加入地圖介面至你的App
16.3 作業①:修改地圖視圖
16.4 顯示全螢幕地圖
16.5 作業②:修復錯誤
16.6 使用地理編碼器將地址轉換為座標
16.7 地圖標記概論
16.8 對地圖加入標記
16.9 對全螢幕地圖加入標記
16.10 自訂標記
16.11 自訂地圖
16.12 作業③:移除標題
16.13 本章小結
|CHAPTER 17| 基礎動畫、視覺效果與回退Segue
17.1 加入評分按鈕
17.2 建立視圖控制器來評分餐廳
17.3 為模態視圖建立Segue
17.4 為評分視圖控制器定義退出機制
17.5 對背景圖片應用模糊效果
17.6 了解Outlet集合
17.7 使用UIView動畫對對話視圖進行動畫處理
17.8 滑入動畫
17.9 彈簧動畫
17.10 結合兩種變形
17.11 回退Segue與資料傳遞
17.12 你的作業:加入動畫與重構程式碼
17.13 本章小結
|CHAPTER 18| 靜態表格視圖、相機與NSLayoutConstraint
18.1 設計新餐廳視圖控制器
18.2 連結新餐廳控制器
18.3 建立圓角的文字欄位
18.4 移至下一個文字欄位
18.5 自訂導覽列
18.6 使用UIImagePickerController顯示照片庫
18.7 採用UIImagePickerControllerDelegate協定
18.8 以編寫程式的方式來定義自動佈局約束條件
18.9 隱藏鍵盤
18.10 你的作業:加入儲存按鈕
18.11 本章小結
|CHAPTER 19| 運用Core Data
19.1 何謂Core Data?
19.2 Core Data堆疊
19.3 使用Core Data模板
19.4 建立資料模型
19.5 建立託管物件
19.6 使用託管物件
19.7 處理空表格視圖
19.8 運用託管物件
19.9 儲存一間新餐廳至資料庫
19.10 使用Core Data取得資料
19.11 使用Core Data刪除資料
19.12 作業①:修復錯誤
19.13 更新託管物件
19.14 作業②:修改最愛按鈕
19.15 本章小結
|CHAPTER 20| 搜尋列與UISearchController
20.1 使用UISearchController
20.2 加上搜尋列
20.3 內容篩選
20.4 使用述詞來搜尋結果
20.5 表頭視圖的搜尋列
20.6 自訂搜尋列的外觀
20.7 你的作業:加強搜尋功能
20.8 本章小結
|CHAPTER 21| 使用UIPageViewController 與容器視圖建立導覽畫面
21.1 快速瀏覽導覽畫面
21.2 為UIPageViewController建立新故事板
21.3 了解頁面視圖控制器與容器視圖
21.4 設計主視圖控制器
21.5 設計頁面內容視圖控制器
21.6 建立WalkthroughContentViewController類別
21.7 實作頁面視圖控制器
21.8 實作導覽視圖控制器
21.9 顯示導覽畫面
21.10 處理頁面指示器與Next/Skip按鈕
21.11 為手勢導覽更新頁面指示器
21.12 解決導覽畫面重複出現的問題
21.13 UserDefaults介紹
21.14 使用UserDefaults
21.15 本章小結
|CHAPTER 22| 探索標籤列控制器與故事板參考
22.1 建立標籤列控制器
22.2 推送後隱藏標籤列
22.3 加入新標籤
22.4 自訂標籤列的外觀
22.5 變更標籤列項目的圖片
22.6 故事板參考
22.7 本章小結
|CHAPTER 23| 入門WKWebView與SFSafariViewController
23.1 設計About視圖
23.2 建立About視圖控制器的自訂類別
23.3 在行動版Safari開啟網頁內容
23.4 使用WKWebView 載入網頁內容
23.5 使用SFSafariViewController載入網頁內容
23.6 本章小結
|CHAPTER 24| 探索CloudKit
24.1 了解CloudKit框架
24.2 在App中啟用CloudKit
24.3 在CloudKit儀表板中管理記錄
24.4 使用便利型API從公共資料庫取得資料
24.5 使用操作型API從公共資料庫取得資料
24.6 效能優化
24.7 動態指示器
24.8 延遲載入圖片
24.9 使用NSCache做圖片快取
24.10 下拉更新
24.11 使用CloudKit儲存資料
24.12 以建立日期來排序結果
24.13 你的作業:顯示餐廳的位置與類型
24.14 本章小結
|CHAPTER 25| App本地化以吸引更多的使用者
25.1 App 國際化
25.2 加入支援的語言
25.3 匯出本地化檔案
25.4 匯入本地化檔案
25.5 測試本地化App
25.6 手動啟用本地化
25.7 本章小結
|CHAPTER 26| 觸覺觸控與內容選單
26.1 主畫面的快速動作
26.2 內容選單與預覽
26.3 本章小結
|CHAPTER 27| 在iOS開發使用者通知
27.1 善用使用者通知來提升客戶參與
27.2 使用者通知框架
27.3 請求使用者允許
27.4 建立與排程通知
27.5 在通知中加入圖片
27.6 與使用者通知互動
27.7 建立與註冊自訂動作
27.8 動作的處理
27.9 本章小結
|CHAPTER 28| 在iOS實機上部署與測試App
28.1 了解程式碼簽署與裝置描述檔
28.2 檢視你的Bundle ID
28.3 在Xcode中自動簽署
28.4 透過USB部署App至你的裝置
28.5 透過Wi-Fi部署App
28.6 本章小結
|CHAPTER 29| 使用TestFlight進行Beta測試及CloudKit生產環境部署
29.1 在App Store Connect建立App記錄
29.2 App資訊
29.3 價格與可用性
29.4 App政策
29.5 準備送審
29.6 更新你的編譯字串
29.7 準備你的App圖示與啟動畫面
29.8 App的打包與驗證
29.9 上傳你的App至App Store Connect
29.10 內部測試管理
29.11 管理外部測試者的Beta測試
29.12 CloudKit生產環境部署
29.13 本章小結
|CHAPTER 30| App Store上架
30.1 做好準備與充分測試
30.2 上傳你的App至App Store
30.3 本章小結
|APPENDIX A| Swift基礎概論
A.1 變數、常數與型別推論
A.2 沒有分號做結尾
A.3 基本字串操作
A.4 陣列
A.5 字典
A.6 集合
A.7 類別
A.8 方法
A.9 控制流程
A.10 元組
A.11 可選型別的介紹
A.12 為何需要可選型別?
A.13 解開可選型別
A.14 可選綁定
A.15 可選鏈
A.16 可失敗初始化器
A.17 泛型
A.18 泛型型別約束
A.19 泛型型別
A.20 計算屬性
A.21 屬性觀察者
A.22 可失敗轉型
A.23 repeat-while
A.24 for-in where子句
A.25 Guard
A.26 錯誤處理
A.27 可行性檢查
|CHAPTER 01| 開發工具、學習方法與App點子
1.1 開發App的所需工具
1.2 學習App的方式
1.3 發想App好點子
1.4 本章小結
|CHAPTER 02| 使用Playground來首次體驗Swift
2.1 開始學習Swift
2.2 在Playground中測試Swift
2.3 常數與變數
2.4 了解型別推論
2.5 文字的處理
2.6 流程控制
2.7 了解陣列與字典
2.8 了解可選型別
2.9 玩玩UI
2.10 下一章的主題
|CHAPTER 03| Hello World!使用Swift建立第一個App
3.1 你的第一個App
3.2 開始建立專案
3.3 熟悉Xcode工作區
3.4 第一次執行你的App
3.5 快...