Dogpa Chen

上一篇完成了TabView的認識,透過快速簡單的程式碼完成SwiftUI忠TabView的設定。

而這篇則要分享在網路資源上看到的客製化TabView方式,原本以為會很難,但其實是VStack與HStack的結合運用讓整體畫面看起來像是TabView。

學習資源:

程式碼:

看完上面的教學嘗試自己練習一個類似的TabView。

首先一樣請出上一篇用到的LandscapeView

接著透過一個Function改變客製的TabView的顏色

接著在ContentView實作我們需要的客製的TabView

結果測試:

可以看到Divider的線其實有在只是要View是白色時才會出現,透過這樣的方式可以讓我們對TabView的按鈕有更多的調整空間。2022也度過一半的時間了,持續加油!!

--

--

上一篇練習了LeetCode第13題羅馬數字,直到現在還是有些似懂非懂。

這篇則要嘗試在SwiftUI實作TabView並用在自己的side project上,在UIKit需要拉出UITabBarController來實踐,而在SwiftUI則非常的簡單就能夠完成。在這裏嘗試透過TabView分出四個照片類別展示自己的攝影作品。

首先先準備四種類別的攝影作品照片放在Assets內,同樣的類別使用相同的命名,後面順序不一樣,讓後續的Foreach可以依照號碼顯示。

接著建立每個TabView共用的View

接著在建立TabView

結果測試

--

--

上一篇簡單的透過政府開放資料API練習圓環圖的程式碼,完成了下一個side project的其中一個小功能。

這個月發現還沒看過LeetCode,所以著手來看看下一道Easy的題目,第十三題,將羅馬數字轉成一般0–9數字。

老實說大概上一週就在看這道題目,但腦迴路有限直到這幾天才慢慢理解別網路上別人答案的思路。先不說這麼多了直接看看我目前的理解。

我覺得當卡住的時候print看看別人的邏輯可能會比較快知道當下的解題思路,這是在這題當中發現到的一個方式,Easy就燒腦看來還有很多需要理清跟加強的地方。持續加油!!

--

--

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

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

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

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

API來源:

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

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

--

--

上一篇研究了Google Firebase的geopoint,對於存取地理資料有了新的處理方式,side project大致可以做出來了。

剛好遇到安裝套件的一些問題讓side project卡關,工作上與同事發現一個有趣的狀況在這裡分享給大家。

一般來說手機的操作的方式都是Home鍵在下方的握法,也就是Portrait的方向,手遊的部分可能就是Landscape Left與Landscape Right這兩個橫向螢幕的操作方式,但其實還有一個Updside Down的狀況,也就是Home鍵朝上的使用,但相對於一些極端情況,很少使用者會這樣操作,而多數App developer也多半沒有開放這個方向。因為工作上的需求與設定,我們剛好要測試四個device orientation的方向,也看到了一些有趣的地方。

首先先開啟一個SwiftUI的專案在Info將Supported interface orientation(iPhone)的四個方向都打開,預設部分是沒有Upside Down(Top home button),所以也可以看到通常我們不會去打開這個方向。

接著建立四個View,紅色與藍色塞入各自的Color,棕色與黃色加入一個Button與pressentationMode的變數。

接續在ContentView內加入剛剛的四個view,在此先忽略UI的設計XD。

接著就可以build了,因為simulator在UpsideDown怪怪的所以透過實機來測試。

上面的影面可以看到在Vstack透過if判斷的紅色與藍色的View在Upside Down可以順利的顯示。

上面的影片也可以看到透過.sheet推出來的黃色的View也沒問題。

--

--

上一篇研究了一題LeetCode的Easy題目,慢慢的累積自己對於LeetCode邏輯與演算法的知識。

這篇則要將自己的side project的地理位置資料放在Firebase的Firestore上讓使用者讀取,原本是想使用兩個值存放經度與緯度,在個別組合起來成為CLLocationCoordinate2D,但在Firestore內看到了geopoint的資料格式。

從上圖來看可以得知Firestore已經提供了一種經緯度座標的資料格式,但是問題來了,Swift內沒有所謂的geoPoing,那彼此間要怎麼溝通?上網搜尋了一下,原來Firestore已經幫我們處理好了。

關於Firebase的前置環境與存取資料方式,可以參考下面的連結。這篇來探討關於geopoint就好。

建立地理資料:

透過Firebase Firestore建立資料格式,內含GeoPoint的資料類型。

--

--