如何使用范围属性初始化NSAttributedString
?
按照目前的情况,我只能弄清楚如何在初始化后添加一个ranged属性,这显然不适用于不可变的NSAttributedString
个实例。
如果我有NSMutableAttributedString
,我可以致电:
[str addAttribute:NSLinkAttributeName value:url range:range];
如果我有NSAttributedString
,我可以构建它:
[[NSAttributedString alloc] initWithString:str attributes:@{NSLinkAttributeName: url}];
但我无法找到将范围放入attributesDict的方法。
谢谢,
答案 0 :(得分:5)
从NSMutableAttributedString开始。如果这不是您所拥有的,请通过在NSAttributedString上调用mutableCopy
来制作可变副本。现在你做有一个NSMutableAttributedString。
所以现在做你需要做的事。
完成后,如果您确实需要NSAttributedString,请在NSMutableAttributedString上调用copy
以获取不可变副本。 (但很难理解为什么你需要这样做,因为你总是可以传递NSMutableAttributedString,其中需要NSAttributedString。)
答案 1 :(得分:0)
试试这行代码。
NSString *name = @"firstname lastname";
NSAttributedString *username = [[NSAttributedString alloc] initWithString:name];
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithAttributedString:username];
[mutableAttributedString addAttribute:NSLinkAttributeName value:@"www.yourdomain.com" range:NSMakeRange(0, name.length)];
此外,您可以在范围
之后使用另一行或文本[mutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"other description"]];
输出