我是 swift 的新手,我目前正在尝试在自定义 UITableCell 中显示多个 ImageView 。
理想情况下,我希望对每个图像进行缩放,使其宽度占屏幕尺寸的一半(同时保留原始纵横比)。
想法是每个 UITableCell 将有 3 张图像的拼贴画和 UILabel 中的一些附加信息——最高的图像将位于其自己的列中,较小的两个堆叠在最高的图像旁边。下面是一个屏幕截图,以帮助说明我正在努力实现的目标:
但是,我在这方面遇到了一些麻烦。目前,一旦我使用 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
返回图像后,在将其添加到第一个 ImageView 之前,我按如下方式更新 ImageView 的框架:
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 而不缩放时看起来完全一样(ImageView 设置为纵横比适合模式)。
当我打印出新缩放图像的宽度和高度时,值与我想要的一致。
我确实注意到缩放前和缩放后的纵横比略微偏离了 ~.01。 -- 鉴于 ImageView 设置为 Aspect Fit,这可以解释我所看到的吗?
我也尝试过将模式设置为“纵横比填充”,但发现某些图像的宽度没有正确缩小,并且占据了屏幕的一半以上。
对于这个冗长的问题深表歉意,非常感谢您对此提供的帮助,如果需要,我会提供更多信息。谢谢!
最佳答案
the ImageView is set to Aspect Fit Mode).
但这是您的问题 - 或者其中之一。如果您不希望 ImageView 调整图像大小,请不要使用任何“纵横比”内容模式,也不要使用任何“适合”或“填充”内容模式。例如,使用中心。
关于ios - 重新缩放图像,使宽度为屏幕尺寸的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180514/