В общем, в чем разница между NSTextAttachment(image:) и NSTextAttachment() + установка .image?

Я обнаружил, что есть два способа создать NSTextAttachment изображения:

// Way 1:
let attachment = NSTextAttachment()
attachment.image = UIImage(named: "...")

// Way 2:
let attachment = NSTextAttachment(image: UIImage(named: "...")!)

Я думал, что эти два способа совершенно одинаковы, пока не сделал это с изображениями SF Symbols:

let imageAttachment = NSTextAttachment()
imageAttachment.image = UIImage(systemName: "photo")!

let fullString = NSMutableAttributedString(string: "1: Press the ")
fullString.append(NSAttributedString(attachment: imageAttachment))
fullString.append(NSAttributedString(string: " button"))
textview.attributedText = fullString

производит:

введите здесь описание изображения

тогда как:

let imageAttachment = NSTextAttachment(image: UIImage(systemName: "photo")!)

let fullString = NSMutableAttributedString(string: "1: Press the ")
fullString.append(NSAttributedString(attachment: imageAttachment))
fullString.append(NSAttributedString(string: " button"))
textview.attributedText = fullString

производит:

введите здесь описание изображения

Я подумал, может быть, способ 2 «сохраняет цвета» или что-то в этом роде, но если я использую свое собственное изображение, оба способа дают одинаковый результат.

Обе их документации (1, 2) ничего не говорите о том, чем они отличаются. Оба, кажется, говорят одно и то же...

Так что же делает NSTextAttachment(image:), а .image = ... нет? Или что .image = ... делает, а NSTextAttachment(image:) нет? Существуют ли другие изображения (кроме изображений символов SF), в которых я вижу разницу?

Я запускаю это на Xcode 11.0 и iOS 13.0, так что это может быть ошибка не последней версии iOS?


person Sweeper    schedule 16.04.2020    source источник
comment
Я только что проверил это на Xcode 11.3 и iOS 13.3, и это дает мне те же результаты, что и способ 1. Это должно быть ошибка в iOS 13.0.   -  person BhargavR    schedule 16.04.2020
comment
@BhargavR Хм ... Я запустил двоичный файл, скомпилированный с помощью Xcode 11.0, на своем телефоне с iOS 13.3.1, и я все еще вижу синее изображение. Вероятно, тогда дело в Xcode. По крайней мере, теперь я знаю, что люди не увидят разные вещи в разных версиях iOS.   -  person Sweeper    schedule 16.04.2020
comment
Интересно, может быть, есть stackoverflow.com/questions/29041458/?   -  person Larme    schedule 16.04.2020
comment
@Larme Этот вопрос действительно кажется несколько связанным ... Еще одно открытие, которое я сделал, заключалось в том, что синий цвет, создаваемый Way 2, на самом деле исходит из tintColor текстового представления. Если я изменю цвет оттенка на красный, то способ 2 создаст красное изображение. Я чувствую, что .alwaysTemplated, вероятно, ближе к ответу, но все еще не объясняет, почему он не делает этого с изображениями без символов SF.   -  person Sweeper    schedule 16.04.2020