PhotosPicker를 사용하면 앨범으로부터 원하는 미디어를 불러오는데 사용될 수 있습니다
에러 발생
PhotosPicker를 통해서 이미지를 불러와 화면에 띄우는 작업을 하던 도중 사진이 자동으로 회전되어 출력되는 것을 확인할 수 있었습니다.
사진 처리 코드
불러온 사진은 다음과 같이 처리됩니다.
struct PhotosSavingView: View {
@State private var selectedImage: Image?
var selectedImageData: PhotosPickerItem
var body: some View {
VStack {
selectedImage?
.resizable()
.scaledToFit()
.padding()
}
.onAppear {
selectedImageData.loadTransferable(type: Image.self, completionHandler: { result in
DispatchQueue.main.async {
guard selectedImageData == self.selectedImageData else { return }
switch result {
case .success(let image?):
selectedImage = image
case .success(nil): break
case .failure(let failure):
print(failure.localizedDescription)
return
}
}
})
}
}
}
해결 방법
방법은 loadTransferable 메서드를 통해서 PhotosPickerItem를 직접 Image로 변환하였지만 Image 대신 Data로 변환하여 사용하면 문제가 해결됩니다.
struct PhotosSavingView: View {
@State private var selectedImageData: Data?
var selectedImageItem: PhotosPickerItem
var body: some View {
VStack {
if let data = selectedImageData, let uiImage = UIImage(data: data) {
Image(uiImage: uiImage)
.resizable()
.scaledToFit()
.padding()
}
}
.onAppear {
selectedImageItem.loadTransferable(type: Data.self, completionHandler: { result in
DispatchQueue.main.async {
guard selectedImageItem == self.selectedImageItem else { return }
switch result {
case .success(let image?):
selectedImageData = image
case .success(nil): break
case .failure(let failure):
print(failure.localizedDescription)
return
}
}
})
}
}
}
해결 후 결과
'SwiftUI > 에러해결' 카테고리의 다른 글
SwiftUI - Observable 여러 뷰에서 데이터 업데이트 안됨 (0) | 2024.08.21 |
---|---|
SwiftUI - ChatGPT 에 이미지 전송 안됨 (0) | 2024.08.10 |
SwiftData Fatal Error in ModelContainer.swift 에러 (0) | 2024.06.22 |
JSONDecoder로 Decode할 때 에러 (0) | 2024.05.08 |
may be missing as an ancestor of this view 에러 (0) | 2024.03.16 |