的UIImageView帧是正确的,contentMode是正确的,不能正确显示图像
问题描述:
我挑选的图像从照片:的UIImageView帧是正确的,contentMode是正确的,不能正确显示图像
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let imageCropper = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ImageCropperVC") as! ImageCropperViewController
imageCropper.delegate = self
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
picker.dismiss(animated: true, completion: nil)
present(imageCropper, animated: false, completion: {
imageCropper.imageView.image = image
})
}
然后裁剪此图片:
@IBAction func crop(_ sender: UIButton) {
let croppedCGImage = imageView.image?.cgImage?.cropping(to: cropArea)
let croppedImage = UIImage(cgImage: croppedCGImage!)
delegate.processCroppedImage(image: croppedImage, cropper: self)
}
然后传递数据的集合视图细胞:
func processCroppedImage(image: UIImage, cropper: ImageCropperViewController) {
let imageData = UIImagePNGRepresentation(image)! as NSData
let i = Side(context: managedObjectContext)
i.image = imageData
imagePickerTarget!.knowledgeComponent = i
cropper.dismiss(animated: true, completion: nil)
}
当细胞获取数据,它这样做:
if let imageData = knowledgeComponent?.image {
if let image = UIImage(data: imageData as Data) {
buttonStack.isHidden = true
imageView.isHidden = false
imageView.image = image
}
}
但图像显示不正常,它放大英寸
我查了值,
- 所有视图的框架是正确的(300 * 400),
- 图像的大小大致相同(301 * 401),
- 图像的比例和插图是正确的
我看过每一个我可以找到的问题,但是他们都没有解决我的问题,我怀疑我的图像数据有问题,情况会是这样吗?如果不是,可能是什么?
这个错误让我不想用UIImageView
了:(
答
我想我找到了问题(在某种程度上),感谢@ TawaNicolas的暗示,有一些错误的图片剪裁,即使图像尺寸是正确的,也许在iPad上300×400尺寸的图像不等于尺寸为300×400的imageView
无论如何,它似乎可以通过调整图像裁剪来改变结果, hooray!
您是否尝试在裁剪之前显示图像?可能是'imageCropper'出现问题?尝试绕过裁剪并尝试显示结果,这种方式可以开始正确调试并捕获问题发生的位置。 – TawaNicolas
@TawaNicolas我只是试过,这次它工作正常:) –