UIImagePickerController允许编辑不工作
我正在使用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);
我错过了什么吗?
编辑:
我已经按照教程,我正在与矩形屏幕上,但如果我平移或缩放它只是简单地回到中心,一旦我举起我的手指。 是否有可能从照片应用程序到这个屏幕?
当使用UIImagePickerController的委托-imagePickerController:didFinishPickingMediaWithInfo:,我们得到的图像使用
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
即使编辑为ON,此代码也将始终返回原始图像。
尝试使用
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
如果编辑为ON,这将返回编辑的图像。
希望这可以帮助。
AllowsEditing
属性只是允许用户select一个图像裁剪到一个正方形,并修剪video,如果select一个video。
任何其他function需要用自定义用户界面和代码来实现。
看到这个问题: iPhone的SDK – 如何自定义UIImagePickerController cropEdct与allowedEditing on?
不幸的是,你在截图中显示的内容不是UIImagePickerController
一部分
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) }
这将是这样的工作。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage userPhoto.image = selectedImage dismiss(animated: true, completion: nil) }
没有办法只通过改变属性如allowsEditing = YES
来enable filters
。 它只会显示裁剪工具。 按照你的截图,看起来你已经集成了一些漏洞百出的开源库,而没有看源代码,这将是很难修复你的中心裁剪错误。
最好是发布一些关于你的实现的具体细节,或者切换到标准的开源库 。