如何调整UIImage矢量图形的大小

时间:2015-12-15 12:01:06

标签: ios iphone uiimageview vector-graphics

这是一个相当奇怪的问题。您可能正在考虑“您必须调整UIImageView,而不是UIImage”,但我无法使其正常工作,而且我不确定这种情况是否正确。

我想在iOS应用程序中使用.pdf矢量图像。此矢量图像已导出为.pdf,默认大小为 320宽度。当然,这是矢量,所以它应该完美地扩展。

当我使用该图片(UIImageView)创建UIImageView(image: vectorImage)时,它的宽度总是 320 (或缩放@ 2x / @ 3x)。

我已约束UIImageView左右边距为0。在iPhone 5上,这显示正确,因为它是一个基于320的大小屏幕。但是,在iPhone 6上 - 分辨率不同,基于375的屏幕宽度。 即使imageView被约束到整个宽度(375),其中的UIImage仍然具有320的大小。 我从未设定过高度。 为了澄清,我正在使用ScaleAspectFit。这不应该导致图像卡在320。因为我从未设定UIImageView的高度,所以它应该以正确的拟合开始。

如果我有图像的宽高比,我可以解决这个问题,但这似乎没必要!

正确的结果是图像填充imageView的整个宽度,并且imageView的高度要更改以适合图像。 实际结果是UIImage的高度和宽度对于所有设备(相对)是相同的,并且UIImageView的高度对于所有设备都是相同的。由于添加了约束,UIImageView的宽度不同,但UIImage内的宽度不会更改。为什么不? 我怀疑 if 导出的矢量图像具有不同的默认大小,结果会有所不同。这是为什么?

1 个答案:

答案 0 :(得分:0)

这篇文章获得了很多观点,所以如果对任何人有帮助,也许值得快速回答。

当使用矢量时,您不能将图像和设置为 UIImageView 并期望它从宽度计算出高度,即使将其设置为 ScaleAspectFit

解决此问题的一种方法是获取 UIImage,获取其大小,然后使用它来设置 UIImageView 高度约束。

例如:

let image = UIImage(named: "name")!
let ratio = image.size.height / image.size.width

imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: ratio).isActive = true