Векторные изображения в UIImageView отображаются по-разному в iOS 12 и 13 - PullRequest
0 голосов
/ 07 ноября 2019

Я использую некоторые изображения в формате PDF в моем xcassets с проверенным «сохранить векторные данные». Одно и то же изображение отображается по-разному в разных версиях iOS (я использую Xcode 11.2). Слева изображение отображается так, как и ожидалось в iOS 13.2, справа изображение не отображается так, как ожидалось в iOS 11.4 (то же самое в iOS 12.2). Сняв флажок «Сохранить векторные данные», проблема не отображается.

enter image description here

Код для создания 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 Ответ

0 голосов
/ 07 ноября 2019

Я знаю, что это может звучать странно, но небольшой переключатель в настройке свойств 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.

...