重新缩放图像,使宽度是屏幕大小的一半

时间:2015-05-12 02:01:59

标签: ios swift uiimageview uiimage image-scaling

我对swift很新,我目前正在尝试在自定义UITableCell中显示多个图像视图。

理想情况下,我希望缩放每个图像,使其宽度填充屏幕大小的一半(同时保留原始宽高比)。

这个想法是每个UITableCell都会在UILabel中拼贴出3幅图像和一些附加信息 - 最高的图像将位于自己的列中,较小的两个图像位于最高层旁边。下面的屏幕截图有助于说明我想要实现的目标:

enter image description here

但是,我遇到了一些麻烦。目前,一旦我使用Alamofire .GET请求检索图像,我就会调用一个执行以下操作的函数:

let aspectRatio = image.size.width / image.size.height
let newHeight = desiredWidth / aspectRatio

UIGraphicsBeginImageContext(CGSizeMake(desiredWidth, newHeight))
image.drawInRect(CGRectMake(0, 0, desiredWidth, newHeight))

let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

return scaledImage

返回图像后,在将图像添加到第一个图像视图之前,我按如下方式更新图像视图的框架:

      cell.img_1.frame =  CGRect(x: 0, y: 0, width: new_image.size.width, height: new_image.size.height)

      cell.img_1.image = new_image

但是,当我运行代码时,图像的宽度不是屏幕的一半 - 相反 - 它们看起来与我们将它们放入图像视图而不进行缩放时的效果完全相同(ImageView设置为Aspect Fit Mode)。

当我打印出新缩放图像的宽度和高度时,值与我想要的一致。

我注意到,前缩放比例和后缩放比例略微偏差~0.01。 - 所以鉴于图像视图设置为Aspect Fit,这可以解释我所看到的吗?

我也尝试将此模式设置为Aspect Fill,但是看到一些图像的宽度没有正确缩小,占据屏幕一半以上的情况。

对这个冗长的问题抱歉,非常感谢对此提供一些帮助,如果需要,我会提供更多信息。谢谢!

1 个答案:

答案 0 :(得分:2)

  

将ImageView设置为宽高比适合模式。

但是你的问题还是其中之一。如果您不希望图片视图调整图片大小,请不要使用任何"方面"内容模式,也没有任何"适合"或者"填充"内容模式。例如,使用中心。