[英]UIImagePickerController allowsEditing = YES not working
[英]UIImagePickerController AllowsEditing not working
我正在使用 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's delegate
方法 - imagePickerController:didFinishPickingMediaWithInfo:
,我们使用
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
此代码将始终返回原始图像,即使编辑处于开启状态。
尝试使用
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
如果编辑打开,这将返回编辑后的图像。
希望这可以帮助。
AllowsEditing
属性仅允许用户在选择图像时裁剪为正方形,并在选择视频时修剪视频。
任何其他功能都需要使用自定义 UI 和代码来实现。
请参阅此问题: iPhone SDK - 如何在启用允许编辑的情况下自定义 UIImagePickerController 中的裁剪矩形?
不幸的是,您在屏幕截图中显示的内容不是UIImagePickerController
一部分
斯威夫特 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)
}
斯威夫特 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)
}
无法仅通过更改allowsEditing = YES
类的属性来enable filters
。 它只会显示裁剪工具。 根据您的屏幕截图,您似乎集成了一些有问题的开源库,如果不查看源代码,则很难修复中心裁剪错误。
最好发布一些有关您的实现的具体细节或切换到标准的开源库。
它会像这样工作。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage
userPhoto.image = selectedImage
dismiss(animated: true, completion: nil)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.