我正在使用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];
即使编辑为ON,此代码也将始终返回原始图像。
尝试使用
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
如果编辑为ON,这将返回编辑的图像。
希望这可以帮助。
AllowsEditing
属性只允许用户在选择图像时裁剪为正方形,并在拍摄视频时修剪视频。
需要使用自定义UI和代码实现任何其他功能。
看到这个问题:iPhone SDK - How to customize the crop rect in UIImagePickerController with allowsEditing 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)
}
enable filters
没有办法改变像allowsEditing = YES
这样的财产。它只会显示裁剪工具。根据你的截图,看起来你已经整合了一些有缺陷的开源库,而没有查看源代码,很难修复你的中心裁剪bug。
最好发布有关您的实现的一些具体细节或切换到standard open source library。
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)
}