用 SwiftUI 5天組裝一個微信


GitHub 鏈接:SwiftUI-WeChatDemo

第一章:剖析:如何用 SwiftUI 5天組裝一個微信 —— 聊天界面篇

第二章:剖析:如何用 SwiftUI 5天組裝一個微信 —— 通訊錄發現我篇

效果圖

實裝內容

  • 4 個 Tab 頁面 + 聊天界面,使用純 SwiftUI 搭建而成
  • 應用啟動界面 Launch Screen
  • 國際化及應用內語言切換功能
  • Combine 使用場景(聊天界面簡易對話功能)
  • 極度簡化的 MVVM 架構
  • 邏輯部分純 Swift5 書寫,幾乎不涉及 OC 類及 UIKit 庫
  • 不使用第三方框架(除了 SwiftGen 提供便利)

難點

  • 在聊天界面中隱藏 Tabbar(未能實現)
  • 聊天界面中信息滾動功能,尤其動畫滑動效果難以實現
  • 保持鍵盤焦點,不自動隱藏(有望在 SwiftUI 3 后實現)
  • 發現頁圖標的動態顏色指定(實現起來障礙較大,多番嘗試發現無法簡單地將 Color 和 一眾漸變色類型 存儲到單一變量,並且 View 比較難以擴展,語法糖副作用嚴重)
  • SwiftUI 原生視圖難以完美復刻微信原生界面(尤其是聯系人頁),判斷是微信使用了大量自定義視圖
  • Tab 按鈕添加紅點(無法實現,SwiftUI 原生視圖僅接受 Image 和 Text,對 Modifier 的修改直接忽略)
  • SwiftUI 中 Combine 的使用(通過 ObservableObject 構造 ViewModel 實現)
  • 應用內語言切換(通過 自定義配置 SwiftGen 實現)

  • SwiftUI2 中缺乏視圖焦點控制方法(該部分將在 SwiftUI3 中提供)
  • SwiftUI 中使用 switch 語法時,會導致自動提示失效,但編譯能順利通過,判斷是 Xcode 問題
  • 目前在書寫 SwiftUI 時遇到語法使用錯誤等情況,偶爾會出現 Xcode 提示未知錯誤,建議報告 bug(因為逐行書寫,基本都能猜出問題所在)

彩蛋

應用內包含微信聯系方式,歡迎同行交流(本人是 Android 攻城獅..)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM