我的应用程序在添加了多张照片后崩溃了:
import SwiftUI
import PhotosUI
import CoreTransferable
struct ContentView: View {
@State var imageData: Data?
@State var selectedItems: [PhotosPickerItem] = []
var body: some View {
VStack {
if let imageData, let uiImage = UIImage(data: imageData) {
Image(uiImage: uiImage)
.resizable()
.scaledToFit()
.frame(width: 250, height: 250)
}
Spacer()
PhotosPicker(selection: $selectedItems,
matching: .images) {
Text("Pick Photo")
}
.onChange(of: selectedItems) { selectedItems in
if let selectedItem = selectedItems.first {
selectedItem.loadTransferable(type: Data.self) { result in
switch result {
case .success(let imageData):
if let imageData {
self.imageData = imageData
} else {
print("No supported content type found.")
}
case .failure(let error):
fatalError(error.localizedDescription)
}
}
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}选择多张照片是完全可以工作的,这个代码可以预览第一张照片非常干净。有没有其他方法可以在SwiftUI中显示选定的多张照片?
发布于 2022-11-02 16:19:03
只需将imageData更改为数组即可。
import SwiftUI
import PhotosUI
import CoreTransferable
@available(iOS 16.0, *)
struct MultipleSelectView: View {
@State var images: [UIImage] = []
@State var selectedItems: [PhotosPickerItem] = []
var body: some View {
VStack {
ForEach(images, id:\.cgImage){ image in
Image(uiImage: image)
.resizable()
.scaledToFit()
.frame(width: 250, height: 250)
}
Spacer()
PhotosPicker(selection: $selectedItems,
matching: .images) {
Text("Pick Photo")
}
.onChange(of: selectedItems) { selectedItems in
images = []
for item in selectedItems {
item.loadTransferable(type: Data.self) { result in
switch result {
case .success(let imageData):
if let imageData {
self.images.append(UIImage(data: imageData)!)
} else {
print("No supported content type found.")
}
case .failure(let error):
print(error)
}
}
}
}
}
}
}
@available(iOS 16.0, *)
struct MultipleSelectView_Previews: PreviewProvider {
static var previews: some View {
MultipleSelectView()
}
}https://stackoverflow.com/questions/74291799
复制相似问题