Joh*_*and 8 uiimageview uiimagepickercontroller ios swift
我有一个圆形框架UIImageView
,我需要在UIImagePickerController
从照片库中选择图像后为其添加圆形框架裁剪工具.与Instagram的UIImagePicker's
裁剪组件非常相似.如何添加此类组件?
UPDATE
我发现这个回购用圆形裁剪工具https://github.com/ruslanskorb/RSKImageCropper
但有人可以指导我如何在用户从照片库中选择照片后使用UIImagePickerController实现此裁剪工具吗?
UPDATE
我在调试器中收到以下消息:
并且我的裁剪视图中的按钮被禁用,这意味着我无法选择它们.调试器会向我转发什么消息?
这是我的代码:
@IBAction func chooseProfilePicture(sender: AnyObject) {
var myPickerController = UIImagePickerController()
myPickerController = UIImagePickerController()
myPickerController.delegate = self;
myPickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
self.presentViewController(myPickerController, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
var image : UIImage = (info[UIImagePickerControllerOriginalImage] as? UIImage)!
editProfilePictureImageView.image = image
self.dismissViewControllerAnimated(false, completion: { () -> Void in
var imageCropVC : RSKImageCropViewController!
imageCropVC = RSKImageCropViewController(image: image, cropMode: RSKImageCropMode.Circle)
imageCropVC.delegate = self
self.navigationController?.pushViewController(imageCropVC, animated: true)
})
}
Run Code Online (Sandbox Code Playgroud)
Kir*_*odi 18
是的,你可以加入RSKImageCropper
你的UIImagePickerController
限定 imagePicker
var imagePicker : UIImagePickerController!
Run Code Online (Sandbox Code Playgroud)
在 ViewDidLoad
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
self.presentViewController(imagePicker, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
代表方法:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
{
var image : UIImage = (info[UIImagePickerControllerOriginalImage] as? UIImage)!
picker.dismissViewControllerAnimated(false, completion: { () -> Void in
var imageCropVC : RSKImageCropViewController!
imageCropVC = RSKImageCropViewController(image: image, cropMode: RSKImageCropMode.Circle)
imageCropVC.delegate =self
self.navigationController?.pushViewController(imageCropVC, animated: true)
})
}
Run Code Online (Sandbox Code Playgroud)
看:
Kirit Modi 的回答正是我所需要的,尽管我需要做一件事来完成这项工作。对于那些不下载测试项目的人,请确保实现您的委托方法:
斯威夫特 3:
extension YourViewControllerClass: RSKImageCropViewControllerDelegate {
func imageCropViewControllerDidCancelCrop(_ controller: RSKImageCropViewController) {
_ = self.navigationController?.popViewController(animated: true)
}
func imageCropViewController(_ controller: RSKImageCropViewController, didCropImage croppedImage: UIImage, usingCropRect cropRect: CGRect) {
self.avatarImageView.image = croppedImage
_ = self.navigationController?.popViewController(animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特 2:
extension YourViewControllerClass: RSKImageCropViewControllerDelegate {
func imageCropViewControllerDidCancelCrop(controller: RSKImageCropViewController) {
self.navigationController?.popViewControllerAnimated(true)
}
func imageCropViewController(controller: RSKImageCropViewController, didCropImage croppedImage: UIImage, usingCropRect cropRect: CGRect) {
self.avatarImageView.image = croppedImage
self.navigationController?.popViewControllerAnimated(true)
}
}
Run Code Online (Sandbox Code Playgroud)