重新调整图像宽度是屏幕大小的一半

我是相当新的迅速,我目前正试图显示在一个自定义的UITableCell多个图像视图。

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

这个想法是,每个UITableCell将有一个UILabel的3张图片和一些附加信息的拼贴 – 最高的图像将坐在自己的列中,较小的两个堆叠在最高的旁边。 下面是一个截图,以帮助说明我正在努力实现的目标:

在这里输入图像说明

但是,我遇到了一些麻烦。 目前,一旦我用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 Fill设置的模式,但是看到一些图像的宽度没有正确缩小的情况,占用了一半以上的屏幕。

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

ImageView被设置为Aspect Fit Mode)。

但是这是你的问题 – 或者其中之一。 如果您不想使用图像视图调整图像大小,请勿使用任何 “宽高比”内容模式,也不要使用任何“适合”或“填充”内容模式。 使用,例如,中心。