ios - 重新缩放图像,使宽度为屏幕尺寸的一半

标签 ios swift uiimageview uiimage image-scaling

我是 swift 的新手,我目前正在尝试在自定义 UITableCell 中显示多个 ImageView 。

理想情况下,我希望对每个图像进行缩放,使其宽度占屏幕尺寸的一半(同时保留原始纵横比)。

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

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

返回图像后,在将其添加到第一个 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/

相关文章:

javascript - 动态更改视频标签源时移动 Safari 崩溃

ios - 保存核心数据会中断获取请求

swift - 识别 Apple TV Remote 上的选择

ios - 使用 AlamofireImage 设置占位符图像的 contentMode

ios - 图像在 ios 模拟器中看起来与在照片预览中不同

ios - 带逗号小数点分隔符的 NSNumberFormatter

javascript - 与页面上的元素交互时防止滑动事件

Swift - 打印时来自组件的日期不正确。日期有 2 个值?

UITableView 位于顶部

iphone - 在 iPhone iOS 上堆叠多个具有透明度的图像