SwiftUI完全開發
-
【作 者】李智威 著
【I S B N 】978-7-5226-1822-7
【責任編輯】王開云
【適用讀者群】科技
【出版時間】2023-11-22
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】568
【千字數】857
【印 張】35.5
【定 價】¥118
【叢 書】暫無分類
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
內 容 提 要
SwiftUI是蘋果公司推出的跨平臺開源UI框架,同時支持iOS、macOS、watchOS、tvOS等多平臺應用開發,使用這一框架可以使用很少的代碼實現復雜的交互和功能,極大地提高了開發效率。
本書共29章,由淺到深系統性講解了SwiftUI的背景、Swift語言的語法基礎、SwiftUI基礎組件、交互操作、數據存儲、網絡請求、硬件設備、付費模式、應用上架等內容,并在每個章節中結合生動有趣的案例進行講解,提高書籍的趣味性。
通過對本書的學習,讀者將會對SwiftUI框架及多平臺開發有全面的認識,并能夠使用SwiftUI進行獨立開發。本書適合正在學習Swift+SwiftUI以及對SwiftUI感興趣的開發人員閱讀和參考。
序
可能你無法想象,這本書是一名產品經理寫的。
創作緣由
四年前,由于機緣巧合,我開始接觸和了解iOS編程。由于當時公司缺少iOS開發工程師,在我的自告奮勇下,技術總監同意了我在產品本職工作之余,協助開發公司iOS版本應用的一些基本功能的請求。
雖然那時的我,除了大學時期學習過C#、C++編程語言,畢業后從事的工作中沒有使用過任何一種編程語言,但我很樂觀,向技術總監“討要”了一本編程書籍,便開始了蒙頭摸索之路。
當時公司使用的是Swift+UIKit的編程方式,各種協議和樣式約束讓我頭疼不已,每次實現一個小功能或者小頁面,都幾乎需要花費我一整晚的時間。后面慢慢熟悉其語法特征后,我能實現一些基本的功能了,也能和其他研發同事就某些技術問題深入討論,這算是意想不到的收獲。
說實話,從安裝官方的開發工具寫下第一行HelloWorld,到在模擬器中運行測試第一個待發版的App,我既懵懂又興奮。項目在模擬器“跑”起來的那一刻,我感覺自己突破了產品經理的極限,成為了一名“懂技術”的產品經理。
之后由于對iOS編程的濃厚興趣,我開始接觸Swift+SwiftUI的編程方式。
SwiftUI是蘋果公司在2019年度WWDC全球開發者大會上發布的全新框架,在國內還較少有企業用于自家商用產品的開發,而且在國內能找到的相關開發書籍特別少,因而我在學習過程中花費了很長一段時間,也為此“掉了不少頭發”。
為了后續方便學習和回顧,我開始在掘金技術社區發表專欄文章,用來記錄SwiftUI的學習過程。在經歷了大半年在平臺上更新了5個專欄約150篇文章后,我有幸和掘金技術社區簽約成為簽約作者。后來有幸收到了中國水利水電出版社編輯的邀請,便萌生了寫作出版的想法。
這便是本書的由來。
想法和嘗試
在準備寫這本書之前,我一直在想如何才能讓這本書生動而有趣。
雖然這本書的目標讀者更多的是iOS開發工程師,或是計算機專業畢業的學生,或是想要學習iOS編程的其他從業者,但我希望這本書能夠適用于所有人,而不僅是程序員。
人人都應該學會編程,人人都可以通過編程學會如何獨立思考,如何分析問題和解決問題。
我不希望這是一本枯燥的書籍,也不希望讀者跟著書本的內容學到了最后,還是沒有辦法獨立開發一款理想中的App。
當初還在學習之初的我,找了很多國內外免費或付費的書籍和教程,跟著項目案例一行一行敲代碼,到最后也只是實現了案例里的內容,卻無法開發出一個完整的App。
這對于一個想要通過努力實現理想和抱負的人是一種很大的打擊。
我理想中的書籍是,當我們一步步跟著書本學習,最后能開發出一款可以上架App Store的App;當我們編程遇到問題了,可以很快在書本對應的段落找到解決方案;當我們學習完最后一章或學到中途,就可以開發出自己想要的App,而不是僅能完成書本中的案例……當然,書本中的知識點應該是最新的。
因此,本書既會包含基礎知識,也會包含一些實戰案例,我們會實現一個個很小很小的精美頁面,并通過對編程中復雜概念的解析,講述如何使用SwiftUI這一響應式UI框架搭建心中的“理想國”。
勘誤和反饋
由于是第一次寫書,編寫能力略顯稚嫩,書中難免會有一些錯誤或者不清晰的地方,在請讀者見諒的同時,也歡迎給予指正和反饋。書中的所有案例都可以從GitHub(https://github.com/ RicardoWesleyli/SwiftUI.git)中下載,如果你有任何寶貴的想法和建議,也可以直接發送郵件至16620164429@163.com,期待與你的相遇。
致謝
感謝一直支持著我的江佩琦小姐,你的李智威先生已經寫完這本書啦!
感謝中國水利水電出版社萬水分社的編輯王新宇老師,在我寫作過程中給予的鼓勵和幫助,讓我能順利完成全部書稿。
最后感謝我的父母、琦琦的父母,還有我那準備步入職場的妹妹,以及在我人生道路上指引我的張勇老師、葉泳成老師、許治老師,感謝你們對我的支持和幫助,為我照亮未來的路。
謹以此書獻給我最親愛的家人,以及眾多熱愛iOS的朋友們!
李智威
2023年7月于深圳
第1章 開啟全新體驗,你的第一個SwiftUI項目 1
1.1 初識Swift和SwiftUI 1
1.2 Xcode,你的官方開發工具 1
1.3 快來創建第一個SwiftUI項目 3
1.4 簡單了解下Xcode的操作和項目結構 5
1.5 預覽你的第一個項目 8
1.6 簡單分析視圖文件代碼 11
1.7 本章小結 12
第2章 文字的魅力,Text文字的使用 13
2.1 創建一個新的視圖文件 13
2.2 使用修飾符格式化文字 15
2.3 更多修飾符和使用場景 17
2.4 在項目中使用自定義字體 19
2.5 多個文字控件的組合使用 24
2.6 本章小結 26
第3章 視覺傳達,Image圖片的使用 27
3.1 展示一張本地圖片 27
3.2 使用修飾符格式化圖片 31
3.3 更多修飾符和使用場景 34
3.4 在項目中使用SF Symbols圖標庫 37
3.5 從互聯網上獲得一張圖片 41
3.6 本章小結 43
第4章 圖文排版,Stack布局容器的使用 44
4.1 實戰案例:啟動頁 44
4.2 實戰案例:缺省頁 50
4.3 實戰案例:狀態顯示頁 52
4.4 小知識:如何收起代碼塊 56
4.5 本章小結 57
第5章 Swift語法初探,磨刀不誤砍柴工 59
5.1 常量和變量 59
5.2 Swift中的數據類型 63
5.3 運算符及使用場景 66
5.3.1 常用的運算符 66
5.3.2 賦值運算符和算術運算符 66
5.3.3 三元運算符 67
5.3.4 比較運算符和邏輯運算符 69
5.3.5 空合運算符 70
5.4 本章小結 71
第6章 點擊交互,Button按鈕的使用 73
6.1 創建一個簡單的按鈕 73
6.2 創建一個漸變色的按鈕 76
6.3 萬物皆可變成按鈕 77
6.4 小知識:參數值類型轉換 80
6.5 使用onTapGesture修飾符 81
6.6 小知識:如何批量重命名參數名稱 82
6.7 本章小結 84
第7章 文本輸入,TextField文本框的使用 85
7.1 聲明文本框參數 85
7.2 創建一個簡單的文本框 86
7.3 使用修飾符格式化文本框 88
7.4 實戰案例:登錄頁面 90
7.5 實戰案例:搜索框 93
7.6 小知識:實現隱藏鍵盤 94
7.7 TextEditor多行文本框的使用 96
7.8 本章小結 99
第8章 數據呈現,List列表的使用 101
8.1 創建一個簡單的列表 101
8.2 遍歷數組中的數據 103
8.3 定義Model數據模型 104
8.4 使用數據模型展示數據 107
8.5 拖動排序和滑動刪除 110
8.6 使用修飾符格式化List列表樣式 115
8.7 本章小結 118
第9章 頁面頂部,NavigationView導航視圖的使用 119
9.1 導航標題和導航按鈕 119
9.2 實戰案例:設置頁面 126
9.3 基于頂部導航的頁面跳轉 129
9.4 自定義返回按鈕 133
9.5 實現側滑返回 137
9.6 本章小結 138
第10章 頁面底部,TabView選項卡視圖的使用 139
10.1 創建一個簡單的底部導航 140
10.2 使用修飾符格式化底部導航 144
10.3 實戰案例:引導頁 146
10.4 實戰案例:輪播圖 153
10.5 本章小結 156
第11章 基礎表單,Form表單的使用 157
11.1 創建一個簡單的表單視圖 158
11.2 在Form表單中使用Toggle開關 160
11.3 在Form表單中使用Picker選擇器 163
11.4 Stepper步進器和Slider滑塊選擇器 166
11.5 實戰案例:RGB色卡 168
11.6 ColorPicker顏色選擇器的使用 172
11.7 本章小結 175
第12章 提示彈窗,那些彈出的信息 177
12.1 實戰案例:內容列表 177
12.2 Sheet模態彈窗 182
12.3 FullScreenCover全屏彈窗 188
12.4 ActionSheet選項彈窗 189
12.5 Alert警告彈窗 192
12.6 ContextMeun點按彈窗 195
12.7 本章小結 198
第13章 屏幕延伸,ScrollView滾動布局容器的使用 199
13.1 創建一個簡單的滾動頁面 200
13.2 實戰案例:電商首頁之輪播圖 206
13.3 實戰案例:電商首頁之快捷按鈕組 208
13.4 實戰案例:電商首頁之商品推薦列表 210
13.5 DisclosureGroup拓展折疊視圖 214
13.6 本章小結 219
第14章 點擊、長按、拖拽、縮放、旋轉 220
14.1 快速了解手勢修飾符 220
14.2 TapGesture點擊手勢 221
14.3 LongPressGesture長按手勢 225
14.4 DragGesture拖拽手勢 230
14.5 MagnificationGesture縮放手勢 234
14.6 RotationGesture旋轉手勢 238
14.7 組合手勢的運用 240
14.8 本章小結 244
第15章 自定義顏色,打造你的獨特風格 245
15.1 前景色 245
15.2 背景色 249
15.3 邊框色 252
15.4 漸變色 254
15.5 十六進制顏色 259
15.6 本章小結 262
第16章 數據流動,頁面之間的數據交互 263
16.1 @State狀態的使用 263
16.2 @Binding綁定的使用 266
16.3 @Environment環境的使用 271
16.4 @AppStorage數據持久化的使用 276
16.5 本章小結 278
第17章 網絡請求,URLSession框架的使用 280
17.1 實戰案例:色卡列表 280
17.2 初識JSON數據格式 285
17.3 URLSession框架的使用 291
17.4 MVVM架構模式的使用 293
17.5 小知識:如何實現隨機展示數據 296
17.6 本章小結 297
第18章 數據持久化,FileManager框架的使用 298
18.1 實戰案例:筆記應用樣式 298
18.2 @AppStorage應用存儲包裝器 309
18.3 FileManager本地文件存儲框架 313
18.3.1 準備數據模型 313
18.3.2 獲得沙盒地址及文件地址 313
18.3.3 讀取本地文件 314
18.3.4 存儲數據到本地文件 315
18.3.5 新增、編輯、刪除方法 316
18.3.6 獲得當前日期方法 317
18.4 實戰案例:新增筆記操作 318
18.5 實戰案例:編輯筆記操作 322
18.6 實戰案例:刪除筆記操作 325
18.7 本章小結 326
第19章 圖形繪制,Path路徑和Shape形狀的使用 328
19.1 SwiftUI中的基礎形狀 328
19.1.1 Circle圓形 328
19.1.2 Ellipse橢圓形 331
19.1.3 Rectangle矩形 333
19.1.4 RoundedRectangle圓角矩形 335
19.1.5 Capsule膠囊矩形 336
19.2 使用Path路徑繪制圖形 338
19.2.1 addLine繪制直線 338
19.2.2 addQuadCurve繪制貝塞爾曲線 339
19.2.3 addCurve繪制二次貝塞爾曲線 340
19.2.4 addArc繪制圓弧 341
19.3 使用Shape自定義形狀 344
19.4 實戰案例:倒計時圓環 345
19.5 本章小結 350
第20章 設備功能初探,拍攝、上傳、保存、分享 351
20.1 從相冊中選擇圖片 351
20.1.1 創建ImagePicker方法 351
20.1.2 使用ImagePicker方法 356
20.2 使用相機拍攝圖片 360
20.2.1 設置選擇器sourceType 360
20.2.2 在真機上預覽效果 362
20.3 保存圖片至本地相冊 362
20.3.1 View轉換為UIImage 363
20.3.2 展示UIImage模型對象 364
20.3.3 保存UIImage模型對象 366
20.4 分享圖片到其他平臺 369
20.4.1 創建ShareSheet方法 369
20.4.2 使用ShareSheet方法 370
20.5 本章小結 372
第21章 FaceID,LocalAuthentication身份認證框架的使用 373
21.1 創建一個配置開關 373
21.2 創建一個解鎖頁面 375
21.3 實現身份認證方法 376
21.4 在Info.plist中配置權限 378
21.5 實現登錄身份認證交互 379
21.6 邏輯優化 382
21.7 本章小結 385
第22章 播放聲音和視頻,增強你的感官體驗 386
22.1 實戰案例:電子木魚 386
22.2 實現播放聲音方法 390
22.3 實戰案例:文字轉語音 393
22.4 創建一個幫助教程頁面 397
22.5 實現播放視頻方法 400
22.6 本章小結 403
第23章 新歷和農歷,使用DateFormatter格式化日期 404
23.1 實戰案例:數字時鐘 404
23.2 格式化日期 408
23.3 如何使用中國歷法 413
23.4 本章小結 417
第24章 自定義樣式,ViewModifier協議的使用 418
24.1 創建自定義視圖 418
24.2 自定義視圖修飾器 421
24.3 實戰案例:注冊頁面 425
24.4 實戰案例:自定義Toast彈窗 429
24.5 知識拓展:修改Toggle控件樣式 434
24.6 本章小結 437
第25章 讓應用“動”起來,加入Animation動畫魔法 438
25.1 為視圖添加隱性動畫 438
25.2 在組合視圖中使用隱性動畫 441
25.3 為視圖添加顯性動畫 444
25.4 實戰案例:計時器按鈕組 445
25.5 實戰案例:Loading加載動畫 450
25.6 實戰案例:3D旋轉動畫 452
25.7 本章小結 454
第26章 CoreData和CloudKit,幫你更好地管理數據 455
26.1 初探CoreData框架 455
26.2 實戰案例:ToDo應用 459
26.2.1 創建ToDoModel數據模型 460
26.2.2 創建ToDoListRow視圖 461
26.2.3 實現toggleToDoItemCompleted方法 463
26.2.4 創建InputTextField視圖 464
26.2.5 實現addToDoItem方法 465
26.2.6 實現deleteTodoItem方法 467
26.3 創建實體模型 468
26.4 創建Persistence單例 472
26.5 實現CoreData本地數據存儲 473
26.5.1 在項目中使用CoreData容器 473
26.5.2 修改addToDoItem方法 477
26.5.3 修改deleteToDoItem方法 478
26.5.4 修改toggleToDoItemCompleted方法 480
26.6 實現iCloud云端數據存儲 482
26.6.1 添加iCloud數據庫容器 482
26.6.2 添加Background Modes能力 484
26.6.3 設置CloudKit云存儲開發 486
26.7 本章小結 487
第27章 輕量互動,Widget桌面小組件的使用 488
27.1 創建Widget小組件項目 489
27.2 小組件項目文件詳解 491
27.2.1 MyWidgetBundle文件 491
27.2.2 MyWidgetLiveActivity文件 492
27.2.3 MyWidget文件 492
27.2.4 MyWidget.intentdefinition文件 498
27.2.5 Assets.xcassets文件 499
27.3 實戰案例:跳轉微信掃一掃 500
27.4 實戰案例:每日一句 503
27.4.1 完成OneWord項目 503
27.4.2 使用App Group實現數據共享 507
27.4.3 完成OneWordWidget項目 509
27.5 本章小結 515
第28章 賺取第一桶金,在應用中添加內購和訂閱 516
28.1 了解應用付費機制 516
28.1.1 付費購買 517
28.1.2 應用內購 517
28.1.3 應用訂閱 518
28.1.4 廣告 519
28.2 實戰案例:內購頁面 519
28.3 在項目中集成內購功能 526
28.3.1 創建內購測試文件 526
28.3.2 創建StoreKit框架引用文件 529
28.3.3 實現應用內購功能 534
28.3.4 實現恢復購買功能 539
28.4 本章小結 540
第29章 應用上架,發布你的第一款App 541
29.1 AppIcon應用圖標 541
29.2 商店預覽圖 544
29.3 技術支持網址URL 545
29.4 隱私政策網址URL 547
29.5 協議、稅務和銀行業務設置 549
29.6 正式提交上架 550
29.7 本章小結 558
- C程序設計實踐教程 [劉衛國]
- C程序設計(慕課版) [劉衛國]
- 程序設計基礎實踐教程(C/C++語言版) [張桂芬 葛麗娜]
- C++案例項目精講 [主編 楊國興]
- MySQL數據庫項目式教程 [陳亞峰]
- C語言程序設計習題與實驗指導(第二版) [主編 甄增榮 張賓]
- C語言程序設計(第二版) [主編 甄增榮 田云霞]
- Unity3D虛擬現實應用開發實踐 [主 編 劉龍]
- Python程序設計 [主編 姜春磊 陳虹潔]
- C語言程序設計實踐教程(活頁式) [主編 鄭茵 陳巍 滕泓虬]
- 面向對象程序設計 [主編 張勇 張平華 趙小龍]
- Python程序設計基礎及實戰 [主編 劉健]
- C語言程序設計 [姜雪]
- Python程序設計實踐教程 [王鶴琴 蔡正保]
- C++程序設計實踐教程(第三版) [主編 劉衛國 曹岳輝]
- C++程序設計(第三版) [主編 曹岳輝 劉衛國]
- C語言程序設計項目化教程(活頁式) [主編 張利華 潘曉利]
- 機器人流程自動化(RPA)實戰——基于UiPath [主編 金鑫]
- Python 語言程序設計實踐指導 [主編 張雙獅]
- Python程序設計案例教程 [主編 毛錦庚 鐘肖英 周賢來 ]
- 基于.NET Core框架的分布式系統架構設計 [湯佳 著]
- Python語言程序設計教程 [郭其標 房宜汕]
- Python程序設計 [李國燕 王新強 劉佳 等編著]
- Python程序設計項目化教程(活頁式) [主編 盧鳳偉]
- Java編程基礎案例式教程 [主編 陳艷華 唐春蘭]
- Python語言同步案例習題精解 [主編 肖朝暉]
- Unity應用開發與實戰(微課版) [主 編 程永恒]
- PHP程序設計項目化教程 [主 編 杜海穎]
- 簡單易懂的Python入門教程 [[日]大澤文孝 著]
- Python數據分析之道——Thinking in Pandas [[美]漢娜·斯捷潘內克(Hannah S]