Ios UIImageView框架正确,contentMode正确,图像显示不正确
我从照片中选择图像:Ios UIImageView框架正确,contentMode正确,图像显示不正确,ios,swift,core-data,uiimageview,Ios,Swift,Core Data,Uiimageview,我从照片中选择图像: func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { let imageCropper = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ImageCropperVC")
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的图像视图
无论如何,我似乎可以通过调整图像裁剪器来改变结果,万岁!在裁剪之前是否尝试过显示图像?可能是
图像裁剪器有问题?尝试绕过裁剪器并显示结果,这样可以正确地开始调试并发现问题所在。@TawaNico我刚试过,这次效果很好:)