设置属性时,NSTextAttachment图像消失

时间:2014-10-15 20:31:22

标签: cocoa-touch swift

我在将属性应用于NSMutableAttributedString时遇到问题。如果他们有图像附件,则在添加属性时图像会消失。

带一个包含文字附件的NSMutableAttributedString,如下所示:

let myString = NSMutableAttributedString(string: "Hello\n\n")
let attachment = NSTextAttachment()
attachment.image = image    // some UIImage
let attachmentString = NSAttributedString(attachment: attachment)
myString.appendAttributedString(attachmentString)

如果我尝试将属性应用于字符串,则会丢失附件:

let bodyFont = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
myString.setAttributes([NSFontAttributeName: bodyFont], 
                       range: NSMakeRange(0, myString.length))

字符串现在显示正确的字体,但附件已消失。如果我制作范围myString.length - 1,则附件仍然存在,因此我可以通过更多工作(可能通过查找NSTextAttachmentCharacter)来绕过任何附件。我想知道是否有更简单的东西我不知道。

1 个答案:

答案 0 :(得分:6)

解决方法是不使用setAttributes:而是addAttributes:因为它会重置最初在字符串上设置的属性。从文本附件生成属性字符串时,它会设置显示图像所需的一些初始属性。