Swift5 + MVVM + 文藝復興微博(純代碼)

背景: 如今愈來愈多的公司會嘗試用 Swift 作 native 的開發了,不少以前習慣用 Objective-C 的開發,有新項目啓動的時候,也會想說用 Swift 試試。若是從 2020年編程語言排行榜 上看的話,Swift的熱度也領先 Objective-C 10個身位了。而咱們如今公司所作的項目,也是用 Swift 開發的,雖說以前有些 OC 基礎,寫起 Swift 功能也是能實現,可是代碼不是很優雅,不夠 'Swift Style'。 熟練度不夠的話,不少 Swift 的高級寫法還得去翻文檔才知道什麼意思,因此就打算從0單排一個Swift的項目,而微博正好有 開放API , 因此這裏就選擇它了。node


主頁界面


表情界面


項目架構


項目功能

  • 原創微博功能
  • 轉發微博功能
  • Emoji表情功能
  • 撰寫微博界面
  • 新特性功能
  • 消息提醒功能
  • 多圖展現功能
  • 富文本功能
  • 多圖展現功能
  • 下滑自動加載功能
  • 上/下拉刷新功能
  • OAuth 受權登陸功能
  • 已完成
  • 發佈微博功能(API已不提供)
  • 圖片上傳功能(API已不提供)
  • 消息功能
  • 發現功能
  • 個人功能
  • SVProgressHUD 提醒功能

用到的技術點

  • TableView高度緩存
  • SDWebImage圓角處理
  • FMDB數據緩存
  • OAuth受權
  • 單張圖片的高度計算
  • Cell滾動自動加載更多
  • 撰寫頁面的動畫處理
  • 發佈界面的Emoji處理
  • 多圖的展現
  • ...

不足點

  • Weibo 的 App 包裏的素材圖片實在太多了,找到徹底匹配的要花費超多時間,因此有的資源不是很匹配,或者不是當前最新的
  • 該Demo使用了FMDB,其實微博這種時效性畢竟高,且有較高政治敏感度的,不適合用本地緩存, 這裏只是一個 FMDB 使用的簡單案例,更適合更新不用太及時,或者相似qq這種接收服務端推送消息的app.
  • 這個文藝復興版的微博(2016年的),如今的微博已經有了較大的變更,且不少API接口如今已經不開放了,因此暫時先用此懷舊版本.
  • SVProgressHUD 在Swift5.0會crash,因此這個app裏沒有 toast 功能,坐等修復...
  • Gif圖片因爲如今門戶網站只能傳 < 5M 的,因此看上去畢竟模糊,實際效果會比 Gif 圖片好得多,建議用真機跑一下試試~
  • 這版原本打算用本人拙劣的英文寫全篇的註釋,後來因爲本人 Chinelish 水平有限,畢竟複雜的邏輯/業務就用中文寫了(求輕噴)
  • ...

使用的第三方庫

  • AFNetworking
  • SDWebImage
  • YYModel
  • SnapKit
  • FMDB
  • pop
  • HMPhotoViewerController

工具分享

圖片素材獲取: cartoolgit

取色標註工具: MarkMangithub

數據庫工具: Navicat數據庫

畫圖工具: MindNode編程

...swift


總結

從事了一段時間的 Swift 開發,發現沒有必定量的代碼積澱(踩坑)仍是不行,因此就打算本身寫一個入門的純Swift App。這個項目是本萌新的第一個發佈swift項目,有些粗糙,可是若是新手做爲 Swift 上手,入門的,其實應該還能夠。該項目基本都是用的 「純代碼+純Swift」 的方式寫的,用的也是儘可能新的 API, 萌新們想玩的話感受仍是能夠上手的。緩存

最近發現,時間管理 真的很重要,不少事情,一開始覺得本身作不到,就打退堂鼓了,可是隻要咬咬牙,挑戰一下本身的極限,這不,這個Demo就出來了~ (爲了寫這破玩意,老夫都頸椎病去作鍼灸了,騙波 star不過度吧~ (開玩笑的,你們開心就好😂))架構

以爲哪裏寫的很差的,哪裏能改進的,有時間幫忙作code review,提PR的,熱烈歡迎啊,這裏先謝過了~app



本文Demo:MNWeibo編程語言


本文感謝 新浪提供的 API 支持,感謝 天涯刀哥-傅紅雪 的指導

相關文章
相關標籤/搜索