Swift Practice # 159 SwiftUI 圓環圖 與水庫蓄水量

Dogpa Chen
Jun 12, 2022

--

前一篇完成了關於狗便袋的side projcet,或許可以看到一些可行性。

結束了上一個side project,準備往下一個邁進,一樣會從單一功能開始研究,最後組合成自己的side project。

第一個要來實踐的是關於圓環圖的部分,這是自己side project會使用到的功能,第三方charts 套件內的圓餅圖與自己設定的圓環圖不一樣,所以透過SwiftUI自己來寫。資料的部分則來自去年剛好缺水嚴重,每天都會注意水庫的水量變化,於是透過想透過水庫的資料來當作顯示內容。

所以主要功能是透過向政府公開資料API請求各地水庫的目前容量來透過圓環圖顯示在畫面上。

API來源:

上面是自己找到的水利署API,裡面也有關於雨量的部分,可以嘗試其他的資料串接。我則是透過「水庫即時資料」這一支API來取得水庫的名稱與目前的蓄水量百分比。

看到上面的圖會發現到一個小問題,就是我們沒有看到水庫的名稱,只有看到水庫的測站代碼,那我到底要怎麼去對應代碼是哪個水庫名稱?在開始之前就需要先去找到這個答案。而答案就在這一支API的上方。

上圖可以看到另一隻API為「水庫基本資料」,裡面的資料有測站代碼與測站中文名稱。所以我嘗試一個做法先透過playground抓這隻API內的資料,將測站代碼與測站中文名稱變成dictionary後再複製到專案內使用。

從上面的程式碼放入到playground可以得到自己想要的dict

基本上前置作業就已經完成了。

接下來可以踏入project內

Model:

水庫資料的Dict

API的JSON格式

ViewModel:

抓取API的Function與被觀察物件Array

View:

自定義的CirclePercentageView

ContentView:

測試結果:

心得:

可以看到上面的GIF透過不同的百分比顯示不同的水庫蓄水量圓環的顏色,很高興大多都是藍色也就是超過80%的蓄水量。也有些水庫是沒有蓄水量百分比資料所以就需要另外判斷,算是又完成了一個小功能。也重新再複習一次SwiftUI API的呼叫方式。有水當思無水之苦。持續加油!!

--

--

Dogpa Chen
Dogpa Chen

Written by Dogpa Chen

Smile Coding / iOS轉職路ING

Responses (1)