今天要講Image Picker
但滿巧的,SwiftUI跟Fluter一樣:原生並沒有提供Image Picker???(But iOS16就有了.....)
所以我們必須透過以前的UIKit來達成這功能
因此,今天的重點其實是談談SwiftUI專案怎麼使用UIKit
首先
UIKit跟畫面有關的Class有兩個
UIView跟UIViewController(就是MVC的V跟C)
想要召喚他們的話必須用protocol UIViewRepresentable 或 UIViewControllerRepresentable包起來
鮮蚵先刻一個Avatar的畫面
結果在這邊還花了一點功夫才調出我想要的畫面
大家可以比較一下上述四種情形的成因
今天會實作兩種不同的UIViewController
UIImagePickerController 跟 PHPickerViewController
UIImagePickerController可以拿相機或相簿/相片當作圖片來源
後來推出一個新的PHPickerViewController
所以是說UIImagePickerController的相簿/相片已經棄用了啦
(不過已經過了N年...)
Avatar點了之後會彈出選單
可以選擇要用哪種picker及其來源
然後當selectedImage(UIImage)變化後
就把它轉成currentImage(Image)
首先先來實作PHPickerViewController
這裡是UIImagePickerController的實作
照抄上一章就好哈哈
但挑照片的操作介面竟然跟PHPickerViewController完全一樣(至少savedPhotosAlbum幫我選到"相簿"segment嘛)
記得以前是不太一樣的(可能跟iOS版本有關)
對了對了
如果有要拍照,記得要在info裡添加:向user要求相機授權
不然會閃退喔^.<
Android版:iOS Developer Learning Android. Lesson 12 - ImageView + ImagePicker (想知道如何把歪掉的照片調正嗎?)
Flutter版:iOS Developer Learning Flutter. Lesson23 ImagePicker
https://github.com/mark33699/FDLS