![見出し画像](https://assets.st-note.com/production/uploads/images/82322777/rectangle_large_type_2_0c9a4db05452c8dba15703c9b22795f5.png?width=800)
New SwiftUI - WWDC22- PhotosPicker
写真の選択ツールも新しくなっています。
最小のコードは以下となるようです。
@State private var selectedImage: [PhotosPickerItem]=[]
var body: some View {
PhotosPicker(
selection: $selectedImage,
matching: .images,
photoLibrary: .shared()) {
Image(systemName: "photo.fill")
.font(.largeTitle)
}
}
この記事にあるコードは写真を選択しても選んだ写真が表示されません。
以下のフォーラムで提示されているコードを参考に少し改修にてみます。
監修後のコードは
struct ContentView: View {
@State private var selectedImage: [PhotosPickerItem] = []
@State private var newlyPickedImage: Image?
var body: some View {
Form {
PhotosPicker("Pick a new background image", selection: $selectedImage, matching: .images)
.onChange(of: selectedImage) { selectedImage in
if let selectedImage = selectedImage.first {
selectedImage.loadTransferable(type: Image.self) { result in
switch result {
case .success(let success):
if let success {
self.newlyPickedImage = success
}
case .failure(let error):
fatalError(error.localizedDescription)
}
}
}
}
if let newlyPickedImage {
newlyPickedImage
.resizable()
.scaledToFit()
}
}
}
}
変数宣言で配列にしました。
@State private var selectedImage: [PhotosPickerItem] = []
そして
.onChange(of: selectedImage) { selectedImage in
if let selectedImage = selectedImage.first {
selectedImage.loadTransferable(type: Image.self) { result in
}}}
selectedImage.firstの.firstは条件検索をする場合に先頭から行う場合に使います。
次に、エラー処理の部分を以下に変更しています。
case .failure(let error):
fatalError(error.localizedDescription)
この記事が気に入ったらサポートをしてみませんか?