Я обнаружил, что есть два способа создать 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?
tintColor
текстового представления. Если я изменю цвет оттенка на красный, то способ 2 создаст красное изображение. Я чувствую, что.alwaysTemplated
, вероятно, ближе к ответу, но все еще не объясняет, почему он не делает этого с изображениями без символов SF. - person Sweeper   schedule 16.04.2020