UIImagePickerController允许编辑不起作用

问题描述 投票:14回答:6

我正在使用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);

我错过了什么吗?

编辑:

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

ios iphone xamarin.ios uiimagepickercontroller xamarin
6个回答
39
投票

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

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

即使编辑为ON,此代码也将始终返回原始图像。

尝试使用

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

如果编辑为ON,这将返回编辑的图像。

希望这可以帮助。


22
投票

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

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

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

不幸的是,你在截图中显示的内容不是UIImagePickerController的一部分


6
投票

SWIFT 3

我很难恢复裁剪的图像(我最后的错误)。而不是使用UIImagePickerControllerOriginalImage,您需要UIImagePickerControllerEditedImage。见下文:

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)
}

1
投票

它会像这样工作。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage

    userPhoto.image = selectedImage

    dismiss(animated: true, completion: nil)
}

0
投票

enable filters没有办法改变像allowsEditing = YES这样的财产。它只会显示裁剪工具。根据你的截图,看起来你已经整合了一些有缺陷的开源库,而没有查看源代码,很难修复你的中心裁剪bug。

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


0
投票

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)

    }
© www.soinside.com 2019 - 2024. All rights reserved.