UIImageView 中的矢量图像在 iOS 12 和 13 中呈现不同

Posted

技术标签:

【中文标题】UIImageView 中的矢量图像在 iOS 12 和 13 中呈现不同【英文标题】:Vector images in UIImageView are rendered differently in iOS 12 and 13 【发布时间】:2019-11-07 11:36:14 【问题描述】:

我在我的 xcassets 中使用了一些 pdf 图像,并选中了“保留矢量数据”。相同的图像在不同的 ios 版本(我使用的是 Xcode 11.2)中呈现不同。在左侧,图像在 iOS 13.2 中按预期呈现,在右侧,图像在 iOS 11.4 中未按预期呈现(在 iOS 12.2 中相同)。通过取消对“保留矢量数据”的检查,问题不会出现。

创建 UIImageViews 的代码如下:

    self.view.backgroundColor = .white
    let imageView = UIImageView(frame: CGRect(x: 10, y: 20, width: self.view.bounds.width - 20, height: self.view.bounds.width - 20))
    imageView.image = UIImage(named: "calendar")
    imageView.backgroundColor = UIColor.red.withAlphaComponent(0.4)
    imageView.contentMode = .center
    self.view.addSubview(imageView)

Pdf 图像大小为 27x23 像素,通过停止模拟器并打印出图像大小和比例仍然可以打印正确的值:

(lldb) po ((UIImageView *) 0x7fa1b0c053e0).image.scale
2

(lldb) po ((UIImageView *) 0x7fa1b0c053e0).image.size
(width = 27, height = 23)

我错过了什么吗?

【问题讨论】:

【参考方案1】:

我知道这听起来很奇怪,但是 UIImageView 属性设置中的一个小开关可以解决这个问题:

let imageView = UIImageView(frame: CGRect(x: 10, y: 20, width: self.view.bounds.width - 20, height: self.view.bounds.width - 20))
imageView.contentMode = .center
imageView.image = UIImage(named: "calendar")
imageView.backgroundColor = UIColor.red.withAlphaComponent(0.4)
self.view.addSubview(imageView)

首先设置contentMode,然后设置image

【讨论】:

以上是关于UIImageView 中的矢量图像在 iOS 12 和 13 中呈现不同的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 Swift iOS 中检测 UIImageView 中的更改图像

Objective C,iOS,都有哪些选项可以在 UIImageView 中的图像顶部添加一些文本?

图像视图中的选择性圆角 - iOS

iOS swift UIImageView更改tableView单元格中的图像

iOS UIImageView 约束在表格单元格中不起作用

iOS:图像在 UIImageView 中无法正确显示