【问题标题】:UIImagePickerController AllowsEditing not workingUIImagePickerController AllowsEditing 不起作用
【发布时间】:2014-01-28 06:21:53
【问题描述】:

我正在使用 UIImagePickerController 来允许用户拍照。我想让他/她事后编辑它,但无论我做什么,我什么都得不到。

这是我的代码(我正在使用 Xamarin):

UIImagePickerController imagePicker = new UIImagePickerController ();
                // set our source to the camera
                imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
                // set what media types
                //imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes (UIImagePickerControllerSourceType.Camera);
                // show the camera controls
                imagePicker.ModalPresentationStyle = UIModalPresentationStyle.CurrentContext;
                imagePicker.ShowsCameraControls = true;
                imagePicker.AllowsEditing = true;
                imagePicker.SetEditing (true,true);
                imagePicker.PreferredContentSize = new SizeF(900,600);
                imagePicker.CameraCaptureMode = UIImagePickerControllerCameraCaptureMode.Photo;
                imagePicker.Title="taste.eat. image";
                // attach the delegate
                imagePicker.Delegate = new ImagePickerDelegate();
                // show the picker
                NavigationController.PresentViewController(imagePicker, true,null);

我错过了什么吗?

编辑:

我已按照教程进行操作,我正在使用矩形进入屏幕,但是如果我平移或缩放它,只要我抬起手指,它就会立即回到中心。是否可以从照片应用程序访问此屏幕?

【问题讨论】:

  • 嘿,你知道了吗?我遇到了同样的问题。
  • 据我了解allowsEditing 只是允许您裁剪照片。正如您在屏幕截图中显示的那样,它实际上并没有在照片应用程序中调出 iOS 照片编辑功能
  • 它只允许你裁剪。对不起。

标签: ios iphone xamarin.ios uiimagepickercontroller xamarin


【解决方案1】:

当使用UIImagePickerController's delegate 方法 - imagePickerController:didFinishPickingMediaWithInfo:,我们使用获取图像

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

此代码将始终返回原始图像,即使编辑处于开启状态。

尝试使用

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

如果编辑处于开启状态,这将返回编辑后的图像。

希望这会有所帮助。

【讨论】:

  • 这个简单的错误把我逼疯了,谢谢你的帮助!
【解决方案2】:

AllowsEditing 属性仅允许用户在选择图像时裁剪为正方形,并在选择视频时修剪视频。

任何其他功能都需要使用自定义 UI 和代码来实现。

看到这个问题:iPhone SDK - How to customize the crop rect in UIImagePickerController with allowsEditing on?

很遗憾,您在屏幕截图中显示的内容不是UIImagePickerController 的一部分

【讨论】:

    【解决方案3】:

    SWIFT 3

    我很难返回裁剪后的图像(这是我的一个简单错误)。您需要 UIImagePickerControllerEditedImage,而不是使用 UIImagePickerControllerOriginalImage。见下文:

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        // The info dictionary contains multiple representations of the image, and this uses the cropped image.
        let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage
    
        // Set yourImageView to display the selected image.
        yourImage.image = selectedImage
    
        // Dismiss the picker.
        dismiss(animated: true, completion: nil)
    }
    

    【讨论】:

      【解决方案4】:

      SWIFT 4+

      在 Swift 4 之后发生了一些变化。UIImagePickerControllerEditedImage 改为 UIImagePickerController.InfoKey.editedImage

      func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
          let selectedImage = info[UIImagePickerController.InfoKey.editedImage] as! UIImage
          imageView.image = selectedImage
          dismiss(animated: true, completion: nil)        
      }
      

      【讨论】:

        【解决方案5】:

        它会像这样工作。

        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
            let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage
        
            userPhoto.image = selectedImage
        
            dismiss(animated: true, completion: nil)
        }
        

        【讨论】:

          【解决方案6】:

          没有办法通过更改allowsEditing = YES 之类的属性来enable filters。它只会显示一个裁剪工具。根据您的屏幕截图,您似乎集成了一些有缺陷的开源库,如果不查看源代码,就很难修复您的中心裁剪错误。

          最好发布一些有关您的实施的具体细节或切换到standard open source library

          【讨论】:

            猜你喜欢
            • 2018-10-05
            • 1970-01-01
            • 2013-12-04
            • 2018-10-11
            • 1970-01-01
            • 1970-01-01
            • 2014-03-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多