重新缩放图像,使宽度为屏幕尺寸的一半
Rescale image so width is half the size of screen
我是 swift 的新手,我目前正在尝试在自定义 UITableCell 中显示多个图像视图。
理想情况下,我希望对每个图像进行缩放,使其宽度占屏幕尺寸的一半(同时保留原始纵横比)。
想法是,每个 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
返回图像后,在将其添加到第一个图像视图之前,我按如下方式更新图像视图的框架:
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)。
当我打印出新缩放图像的宽度和高度时,值与我想要的一致。
我确实注意到预缩放和 post 缩放纵横比略微偏离了 ~.01。 -- 鉴于图像视图设置为 Aspect Fit,这可以解释我所看到的吗?
我也尝试过将模式设置为纵横比填充,但发现某些图像的宽度未按比例适当缩小,并占据了屏幕的一半以上。
对于这个冗长的问题深表歉意,非常感谢您对此提供的帮助,如果需要,我会提供更多信息。谢谢!
the ImageView is set to Aspect Fit Mode).
但这是您的问题 - 或者其中之一。如果您不希望图像视图调整图像大小,请不要使用 any "aspect" 内容模式,也不要使用任何 "fit" 或 "fill"内容模式。例如,使用中心。
我是 swift 的新手,我目前正在尝试在自定义 UITableCell 中显示多个图像视图。
理想情况下,我希望对每个图像进行缩放,使其宽度占屏幕尺寸的一半(同时保留原始纵横比)。
想法是,每个 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
返回图像后,在将其添加到第一个图像视图之前,我按如下方式更新图像视图的框架:
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)。
当我打印出新缩放图像的宽度和高度时,值与我想要的一致。
我确实注意到预缩放和 post 缩放纵横比略微偏离了 ~.01。 -- 鉴于图像视图设置为 Aspect Fit,这可以解释我所看到的吗?
我也尝试过将模式设置为纵横比填充,但发现某些图像的宽度未按比例适当缩小,并占据了屏幕的一半以上。
对于这个冗长的问题深表歉意,非常感谢您对此提供的帮助,如果需要,我会提供更多信息。谢谢!
the ImageView is set to Aspect Fit Mode).
但这是您的问题 - 或者其中之一。如果您不希望图像视图调整图像大小,请不要使用 any "aspect" 内容模式,也不要使用任何 "fit" 或 "fill"内容模式。例如,使用中心。