[英]swift my UIImagePicker doesn't show any image on select image from photo library
everyone I take an imageView and set an image on it, I want to select an image from the photo library if the user tapped on the image here my code is大家我拿一个 imageView 并在上面设置一个图像,我想 select 如果用户在这里点击图像,我想从照片库中获取一个图像我的代码是
@IBOutlet weak var uploadImage: UIImageView!
var imagePicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
uploadImage.isUserInteractionEnabled = true
uploadImage.addGestureRecognizer(tapGestureRecognizer)
}
@objc func imageTapped(tapGestureRecognizer: UITapGestureRecognizer)
{
print("image tapped")
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){
print("Button capture")
let imag = UIImagePickerController()
imag.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate
imag.sourceType = UIImagePickerControllerSourceType.photoLibrary;
imag.allowsEditing = false
self.present(imag, animated: true, completion: nil)
}
}
func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) {
let selectedImage : UIImage = image
uploadImage.image=selectedImage
self.dismiss(animated: true, completion: nil)
}
but it doesn't show image after select an image from the photo library,但它在 select 之后不显示图片,图片来自照片库,
it shows me the message in debug area -它向我显示调试区域中的消息 -
[1098:24494] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}
[1098:24494] [发现] 发现扩展时遇到错误:错误域 = PlugInKit 代码 = 13“查询已取消”用户信息 = {NSLocalizedDescription = 查询取消}
You are implementing the wrong didFinishPickingMediaWithInfo method signature.您正在实施错误的didFinishPickingMediaWithInfo方法签名。
The correct signature should be正确的签名应该是
func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
Try like this:试试这样:
Conform your controller to UIImagePickerControllerDelegate and UINavigationControllerDelegate and declare your imaView programmatically like this:使您的 controller 符合 UIImagePickerControllerDelegate 和 UINavigationControllerDelegate 并像这样以编程方式声明您的 imaView:
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
let imageV: UIImageView = {
let iv = UIImageView()
iv.image = UIImage(named: "yourImageName")
iv.isUserInteractionEnabled = true
iv.clipsToBounds = true
iv.contentMode = .scaleAspectFit
iv.translatesAutoresizingMaskIntoConstraints = false
return iv
}()
Now in viewDidLoad set imageView tap gesture and constraints:现在在 viewDidLoad 中设置 imageView 点击手势和约束:
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
let gesture = UITapGestureRecognizer(target: self, action: #selector(handlePickImage))
imageV.addGestureRecognizer(gesture)
view.addSubview(imageV)
imageV.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
imageV.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
imageV.heightAnchor.constraint(equalToConstant: 200).isActive = true
imageV.widthAnchor.constraint(equalToConstant: 200).isActive = true
}
Declare, set and present your pickerController in handlePickImage function:在 handlePickImage function 中声明、设置和呈现您的 pickerController:
var imagePicker = UIImagePickerController()
@objc fileprivate func handlePickImage() {
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
imagePicker.view.tintColor = .white
imagePicker.modalPresentationStyle = .fullScreen
imagePicker.mediaTypes = ["public.image"]
imagePicker.allowsEditing = false
imagePicker.navigationBar.barTintColor = .darkGray
print("tapped....")
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
present(imagePicker, animated: true, completion: nil)
}
}
Now you can handle your image picked:现在您可以处理选择的图像:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let imagePicked = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageV.image = imagePicked
print("Image picked height:", imagePicked.size.height, "Image picked width:", imagePicked.size.width)
}
picker.dismiss(animated: true) {
print("Picker Dismissed...")
}
}
Don't forget to set if user tap on cancel button如果用户点击取消按钮,请不要忘记设置
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
I faced the same problem.我遇到了同样的问题。 It was solve.
解决了。 The problem was that I forgot add the delegate.
问题是我忘了添加代表。
imagePicker.delegate = self
Be aware that:意识到:
[1098:24494] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled} [1098:24494] [发现] 发现扩展时遇到错误:错误域 = PlugInKit 代码 = 13“查询已取消”用户信息 = {NSLocalizedDescription = 查询取消}
Is just a warning.只是一个警告。 This message doesnt mean a problem
此消息并不意味着问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.