Я думаю, что проблема возникает, когда значение imageView.image!.size.width
больше imageView.bounds.size.width
или для значений высоты.
Это приведет к widthRatio
или heightRatio
до значения меньше 1.
И когда ваш scale
равен <1 и умножен на ваши <code>imageWidth и imageHeight
, вы получите меньший UIImageView, чем исходный.
I 'Я предполагаю, что разрешение изображения, полученного с камеры, такой же «четкой», как у iPhone7, будет высоким.
Вам придется проверить, какое значение выше imageView.bounds.width
или imageView.image!.size.width
, а затем получитьобратная в зависимости от состояния.
func resizeImageViewToImageSize(_ imageView:UIImageView) {
let maxWidth = view.frame.size.width
let maxHeight = view.frame.size.height
var widthRatio = imageView.bounds.size.width / imageView.image!.size.width
if widthRatio < 1 {
widthRatio = 1 / widthRatio
}
let heightRatio = imageView.bounds.size.height / imageView.image!.size.height
if heightRatio < 1 {
heightRatio = 1 / widthRatio
}
let scale = min(widthRatio, heightRatio)
let maxWidthRatio = maxWidth / imageView.bounds.size.width
let maxHeightRatio = maxHeight / imageView.bounds.size.height
let maxScale = min(maxWidthRatio, maxHeightRatio)
let properScale = min(scale, maxScale)
let imageWidth = properScale * imageView.image!.size.width
let imageHeight = properScale * imageView.image!.size.height
print("\(imageWidth) - \(imageHeight)")
imageView.frame = CGRect(x: 0,
y: 70,
width: imageWidth,
height: imageHeight)
imageView.center.x = view.center.x
}