我有一个MSMutableAttributedString displayContent。内容的属性因字符串而异,即颜色和字体大小可能因字母而异。
我希望将一个新字符添加到字符串的末尾,并让它获取displayContent中最后一个字符的属性。我无法预先知道这些属性是什么,因为它们在用户控制之下。
当我追加新字符(TempAttr)时:
NSAttributedString * tempAttr = [[NSAttributedString alloc] initWithString:appendage];
[displayContent appendAttributedString:tempAttr];它似乎将整个字符串的属性重置为新字符的属性(由于我不知道它们需要成为什么属性,所以没有设置这些属性)。
如何让tempAttr获取displayContent中最后一个字符的属性?谢谢。
更新。以笨拙但实用的方式在这方面取得了进展。从显示中的最后一个字符(displayContent)复制属性字典,然后将这些属性重新应用于添加的新字符:
NSMutableDictionary * lastCharAttrs = [NSMutableDictionary dictionaryWithCapacity:5];
[lastCharAttrs addEntriesFromDictionary: [displayContent attributesAtIndex:0
effectiveRange:NULL]]; // get style of last letter
NSMutableAttributedString * tempAttr = [[NSMutableAttributedString alloc] initWithString:newCharacter
attributes:lastCharAttrs];
[displayContent appendAttributedString:tempAttr]; // Append to content in the display field我本来希望有一种更优雅的方法来做到这一点,比如设置NSTextField的一个属性。
发布于 2011-06-13 01:04:52
我想我偶然发现了这个问题的解决方案,然后在寻找我为自己创造的问题的答案时找到了这个页面(与你的问题相反)。
如果您做了以下操作:
[[displayContent mutableString] appendString:newCharacter];您将最终得到附加的newCharacter和前面的属性“拉伸”来覆盖它。但是,我在任何地方都找不到这种行为的文档,所以您可能厌倦了依赖它。
https://stackoverflow.com/questions/5766340
复制相似问题