我正在使用UIImagePicker让用户拍照。拍摄照片时,我希望它们平移和缩放图像以适应裁剪框内部,以便将图像存储为正方形。
然而,在裁剪图像时,似乎无法将其移动到(纵向)图像的顶部和底部(如果是横向,则左右移动)。
我尝试过搜索,但似乎没有太多信息,但这似乎是一个大问题。
有人可以帮忙吗?
这是我正在使用的极少量代码:
chart.group()
显然有更多的代码,但这是主要部分。
用照片编辑:
所以我希望能够移动照片/放大以选择要保存的任何方形部分。但是,我无法从这个位置移动/继续抢回。
我可以放大,但它仍限制我从顶部和底部边缘。
同样,它适用于photoLibrary。
答案 0 :(得分:5)
这是iOS 6中引入的一个错误,尚未修复。
雷达于2012年因此被提出,但由Apple关闭。我设法让它再次打开,并且在过去的6个月里一直纠缠着我的联系人中的Apple开发者。
http://openradar.appspot.com/12318774
在Apple确定之前,唯一的选择是使用第三方控件或自己动手。
这是我打开的雷达......
答案 1 :(得分:0)
我知道你说它已经放大了,但你可能只需要调整它的界限。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
image.image = info[UIImagePickerControllerEditedImage] as? UIImage
self.dismiss(animated: true, completion: nil)
}
您可能还需要使用CGRect在屏幕中正确设置图像。它应该居中。如果您使用的是iphone 5,尺寸为640 x 1136。
这是因为图像的宽度或高度最大化到屏幕上。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果已在info.plist中将“基于视图控制器的状态栏外观”设置为“否”,并使用来将状态栏外观设置为浅色
UIApplication.shared.statusBarStyle = .lightContent
或使用任何其他方法,然后在显示图像选择器之前将样式设置为.default即可。例如:
imagePicker.allowsEditing = true
imagePicker.sourceType = .photoLibrary
UIApplication.shared.statusBarStyle = .default
present(imagePicker, animated: true, completion: nil)
根据需要更改源类型,如photoLibrary或camera,然后在didFinishPickingMediaWithInfo的完成区域中将以下内容添加到完成区域。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
//let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
var pickedImage : UIImage?
if let img = info[UIImagePickerControllerEditedImage] as? UIImage
{
pickedImage = img
}
else if let img = info[UIImagePickerControllerOriginalImage] as? UIImage
{
pickedImage = img
}
dismiss(animated: true, completion: {
UIApplication.shared.statusBarStyle = .lightContent
})}
显然,这是解决该问题的方法。希望这会有所帮助。