我尝试创建一个SwiftUI类,它符合UIViewRepresentable并实现makeUIView和updateUIView。但无法完成它。以下是代码:
代码:
struct ImagePicker : UIViewRepresentable {
@Binding var image: UIImage
class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@Binding var image: UIImage
init(image: Binding<UIImage>) {
$image = image
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let possibleImage = info[.editedImage] as? UIImage {
image = possibleImage
} else if let possibleImage = info[.originalImage] as? UIImage {
image = possibleImage
} else {
}
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(image: $image)
}
func makeUIView(context: UIViewRepresentableContext<ImagePicker>) -> UIImageView {
let imageview = UIImageView()
let picker = UIImagePickerController()
picker.delegate = context.coordinator
return imageview
}
func updateUIView(_ uiView: UIImageView,
context: UIViewRepresentableContext<ImagePicker>) {
uiView.image = image
}
}
我尝试将imagePicker作为控件,但无法使用。
3条答案
按热度按时间mzsu5hc01#
我在这里使用
presentationMode
来检查视图是否显示?通过使用此函数,您可以将
dismiss()
转换为UIImagePickerController
。SwiftUI预览的示例代码:
8hhllhi22#
请试试这个
代码:
选择器显示在视图的正上方,如果没有转换,则所选图像将不带任何动画,并替换"显示图像选择器"按钮
然后创建显示视图,在其中可以调用show this imagePicker
b5lpy0ml3#
SwiftUI终于在iOS 16中获得了自己的原生照片选择器视图。PhotosPicker视图支持PHPickerViewController提供的所有常见功能,如单选和多选、资产类型过滤和相册切换。
样品ss
第一个c0d1x第一个c1d1x第一个c2d1x