PhotosPicker
PhotosPickerItem 类型
loadTransferable 方法
import SwiftUI
import PhotosUI
class PhotosPickerViewModel:ObservableObject{
@Published var selectImage:UIImage? = nil
@Published var imageSelection:PhotosPickerItem? = nil{
didSet{
setImage(from: imageSelection)
}
}
func setImage(from selection:PhotosPickerItem?){
guard let selection else {**return**}
Task{
if let data = try? await selection.loadTransferable(type: Data.self){
if let uiImage = UIImage(data: data){
selectImage = uiImage
return
}
}
}
}
}
struct PhotosPickerView: View {
@StateObject var vm:PhotosPickerViewModel = PhotosPickerViewModel()
var body: some View {
VStack {
Text("Pick Image")
if let image = vm.selectImage{
Image(uiImage: image)
.resizable()
.scaledToFill()
.frame(width: 200,height: 200)
.cornerRadius(10)
}
PhotosPicker(selection: $vm.imageSelection, matching: .images){
Text("Open the photo library")
.foregroundStyle(.red)
}
}
.padding()
}
}
struct PhotosPickerView_Previews: PreviewProvider {
static var previews: some View {
PhotosPickerView()
}
}