背景: 現(xiàn)在越來越多的公司會嘗試用 Swift 做 native 的開發(fā)了如贷,很多之前習(xí)慣用 Objective-C 的開發(fā),有新項(xiàng)目啟動的時候帕膜,也會想說用 Swift 試試珊皿。如果從 2020年編程語言排行榜 上看的話,Swift的熱度也領(lǐng)先 Objective-C 10個身位了懊缺。而我們現(xiàn)在公司所做的項(xiàng)目疫稿,也是用 Swift 開發(fā)的,雖然說之前有些 OC 基礎(chǔ),寫起 Swift 功能也是能實(shí)現(xiàn)而克,但是代碼不是很優(yōu)雅靶壮,不夠 'Swift Style'。 熟練度不夠的話员萍,很多 Swift 的高級寫法還得去翻文檔才知道什么意思腾降,所以就打算從0單排一個Swift的項(xiàng)目,而微博正好有 開放API , 所以這里就選擇它了碎绎。
主頁界面
表情界面
項(xiàng)目架構(gòu)
項(xiàng)目功能
- 原創(chuàng)微博功能
- 轉(zhuǎn)發(fā)微博功能
- Emoji表情功能
- 撰寫微博界面
- 新特性功能
- 消息提醒功能
- 多圖展示功能
- 富文本功能
- 多圖展示功能
- 下滑自動加載功能
- 上/下拉刷新功能
- OAuth 授權(quán)登錄功能
- 已完成
- 發(fā)布微博功能(API已不提供)
- 圖片上傳功能(API已不提供)
- 消息功能
- 發(fā)現(xiàn)功能
- 我的功能
- SVProgressHUD 提醒功能
用到的技術(shù)點(diǎn)
- TableView高度緩存
- SDWebImage圓角處理
- FMDB數(shù)據(jù)緩存
- OAuth授權(quán)
- 單張圖片的高度計(jì)算
- Cell滾動自動加載更多
- 撰寫頁面的動畫處理
- 發(fā)布界面的Emoji處理
- 多圖的展示
- ...
不足點(diǎn)
- Weibo 的 App 包里的素材圖片實(shí)在太多了螃壤,找到完全匹配的要花費(fèi)超多時間,所以有的資源不是很匹配筋帖,或者不是當(dāng)前最新的
- 該Demo使用了FMDB奸晴,其實(shí)微博這種時效性畢竟高,且有較高政治敏感度的日麸,不適合用本地緩存, 這里只是一個 FMDB 使用的簡單案例寄啼,更適合更新不用太及時,或者類似qq這種接收服務(wù)端推送消息的app.
- 這個文藝復(fù)興版的微博(2016年的)代箭,現(xiàn)在的微博已經(jīng)有了較大的變動墩划,且很多API接口現(xiàn)在已經(jīng)不開放了,所以暫時先用此懷舊版本.
- SVProgressHUD 在Swift5.0會crash嗡综,所以這個app里沒有 toast 功能乙帮,坐等修復(fù)...
- Gif圖片由于現(xiàn)在門戶網(wǎng)站只能傳 < 5M 的,所以看上去畢竟模糊极景,實(shí)際效果會比 Gif 圖片好得多察净,建議用真機(jī)跑一下試試~
- 這版本來打算用本人拙劣的英文寫全篇的注釋,后來由于本人 Chinelish 水平有限盼樟,畢竟復(fù)雜的邏輯/業(yè)務(wù)就用中文寫了(求輕噴)
- ...
使用的第三方庫
- AFNetworking
- SDWebImage
- YYModel
- SnapKit
- FMDB
- pop
- HMPhotoViewerController
工具分享
圖片素材獲取: cartool
取色標(biāo)注工具: MarkMan
數(shù)據(jù)庫工具: Navicat
畫圖工具: MindNode
...
總結(jié)
從事了一段時間的 Swift 開發(fā)氢卡,發(fā)現(xiàn)沒有一定量的代碼積淀(踩坑)還是不行,所以就打算自己寫一個入門的純Swift App晨缴。這個項(xiàng)目是本萌新的第一個發(fā)布swift項(xiàng)目异吻,有些粗糙,但是如果新手作為 Swift 上手喜庞,入門的,其實(shí)應(yīng)該還可以棋返。該項(xiàng)目基本都是用的 “純代碼+純Swift” 的方式寫的延都,用的也是盡量新的 API, 萌新們想玩的話感覺還是可以上手的。
最近發(fā)現(xiàn)睛竣,時間管理 真的很重要晰房,很多事情,一開始以為自己做不到,就打退堂鼓了殊者,但是只要咬咬牙与境,挑戰(zhàn)一下自己的極限,這不猖吴,這個Demo就出來了~ (為了寫這破玩意摔刁,老夫都頸椎病去做針灸了,騙波 star不過分吧~ (開玩笑的海蔽,大家開心就好??))
覺得哪里寫的不好的共屈,哪里能改進(jìn)的,有時間幫忙做code review党窜,提PR的拗引,熱烈歡迎啊,這里先謝過了~
本文Demo:MNWeibo