动态

详情 返回 返回

Swift + SwiftUI原生iOS開發 開發筆記4(1.0.0最終) – 識別結果信息詳情 + 頁面美化 + 總結 - 动态 详情

  • Swift + SwiftUI原生iOS開發 開發筆記1 – 實現攝像頭調用和拍攝圖片
  • Swift + SwiftUI原生iOS開發 開發筆記2 – 使用YOLOv3n模型對畫面進行識別
  • Swift + Swiftui原生iOS開發-開發筆記3 – 自主模型部署並獲取識別

背景

我的畢業設計是《Development of an AI-Powered Mobile Application for Animal Identification and Information》,開發一個可以識別動物的移動軟件,在跟導師溝通後打算用Yolo作為深度學習識別模型,移動端軟件使用原生的iOS開發,即在XCode上使用Swift+SwiftUI進行iOS開發,原本就一直對iOS開發很感興趣,借這次機會好好學習一下原生的iOS開發。

核心功能實現後,接下來就是部分細節的完善了,包括結果的詳細解釋以及頁面的美化。

識別結果動物的具體信息

在成功識別完動物後,需要有一個頁面對識別的動物進行介紹,而按照原本的項目計劃是需要獲取Wiki百科裏該動物的信息。

但是在國內由於眾所周知的原因沒辦法獲取Wiki百科的內容,所以就打算獲取百度百科的內容,可是經過測試發現百度具有反爬蟲機制,所以沒辦法通過爬蟲的方式獲取,其實可以試一下API的方式,但是由於時間關係就改成鏈接。

app link.jpeg

通過把可識別的目標對應的百度百科鏈接存下來,再通過每次識別的結果的id調用出來就可以了啦。

Link("📚 查看百科介紹", destination: URL(string: links[object.predictObject.classId])!)
Link("🔗 View the encyclopedia introduction", destination: URL(string: links[object.predictObject.classId])!)

頁面美化

在跟外教老師溝通過後,被點評APP需要更”User Friendly”,作為直男審美只能硬着頭皮在GPT的幫助下美化APP。

歡迎界面

原本使用封面做了個加載界面,原本以為可以作為歡迎界面,但是確實用户都沒有什麼入口不大好,所以就單獨設計了一個歡迎界面。

具體好像也沒啥好説的,就是幾個Text加一個Image做背景。

app Welcome small.jpeg

其他界面添加Emoji

可能是gpt美化表達方式能力有限,所以更多的是添加Emoji,不過也確實有活力多了。
List.jpeg

總結

至此,動物識別APP 1.0.0開發完成了,還有很多不足可以完善,不過作為第一次iOS完整開發還是非常豐富且有挑戰性的。

可拓展的功能

就基於這個app以學習為目的可拓展的功能還是有很多的。

網絡獲取數據

雖然是由於反爬蟲原因沒有使用到網絡獲取的功能,但是如果為app開發一個後端,以json形式傳輸數據也是一個好的角度,比如説將模型和對應結果都存在服務器,這樣只要服務器上的模型更新支持更多的動物,那麼app也可以識別更多的動物了,總之基於服務器後端的話就可以有更多的可能。

自動適應角度

大部分app都有自動旋轉的功能,本質上是調用系統的api來得知當前的手機方向並對其作適配,後期如果可以的話加上這個功能,可以完善對ios開發系統性的瞭解,也是一個很基礎很常用的功能。

不足

不足,也是未來iOS開發學習路線,這次硬着頭皮上手,雖然是開發出了個能用的玩意,但是還是有很多很多的不足,在未來學習iOS開發的時候有了更深的瞭解和側重點。

MVVM架構

這次開發的過程存在一個很明顯的過程,代碼結構很亂,不知道這部分代碼該放哪,總感覺好像放哪都行,但是iOS開發推薦是以MVVM架構開發的,雖然文件後綴都叫swift,但是每個文件都應該有自己專屬的地方和專屬的功能。

我由於缺少這部分理論知識,所以顯得有點有心無力,在開發下一個app的時候就需要學習並嚴格按照MVVM架構開發。

數據持久化

目前app還存在數據不持久化的問題,也就是所有用户操作得到的數據在app重啓後就不見了,沒辦法存在手機裏,而這部分也是iOS開發的關鍵技術。

結語

總而言之,這次開發經歷還是非常有意思的,果然實踐才是最好的學習方法,哪怕啥也不會,開始動手,可能會慢點,但是總是會學會的!

Add a new 评论

Some HTML is okay.