在纵向模式下拍摄的图像拾取器(UIImagePickerController)的照片显示为拉伸-Xcode11/ SwiftUI。
在Xcode11和SwiftUI中,使用UIImagePickerController来拍摄照片时,如果在纵向模式下拍摄的照片在显示时出现拉伸的情况,可以通过以下步骤解决:
@State
属性包装一个UIImage
类型的变量,用于存储拍摄的照片。@State private var image: UIImage?
func openImagePicker() {
let imagePicker = UIImagePickerController()
imagePicker.sourceType = .camera
imagePicker.delegate = self
// 设置allowsEditing为true,允许用户编辑照片
imagePicker.allowsEditing = true
// 设置照片的质量为高质量
imagePicker.videoQuality = .typeHigh
// 设置照片的方向为纵向
imagePicker.cameraCaptureMode = .photo
// 在iPad上以弹出窗口的形式显示图像拾取器
imagePicker.modalPresentationStyle = .popover
// 在iPad上设置弹出窗口的位置
imagePicker.popoverPresentationController?.sourceView = self.view
// 打开图像拾取器
self.present(imagePicker, animated: true, completion: nil)
}
extension YourView: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
// 从info字典中获取编辑后的照片
if let editedImage = info[.editedImage] as? UIImage {
self.image = editedImage
}
// 关闭图像拾取器
picker.dismiss(animated: true, completion: nil)
}
}
Image
来显示拍摄的照片。Image(uiImage: self.image ?? UIImage())
.resizable()
.aspectRatio(contentMode: .fit)
这样,拍摄的照片就会按照原始比例显示,并且不会出现拉伸的情况。
推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb)
领取专属 10元无门槛券
手把手带您无忧上云