2015-10-14 65 views
0

如何使用範圍屬性初始化NSAttributedString?按照現狀,我只能在初始化後才知道如何添加一個ranged屬性,這顯然不適用於不可變的NSAttributedString實例。如何創建具有範圍屬性的不可變NSAttributedString

如果我有一個NSMutableAttributedString,我可以打電話:

[str addAttribute:NSLinkAttributeName value:url range:range]; 

如果我有一個NSAttributedString,我可以構建它:

[[NSAttributedString alloc] initWithString:str attributes:@{NSLinkAttributeName: url}]; 

但我不能找到一種方法,把範圍到attributesDict。

感謝,

回答

4

開始與NSMutableAttributedString。如果這不是你所擁有的,請通過在NSAttributedString上調用mutableCopy來製作一個可變副本。現在你有一個NSMutableAttributedString。

所以,現在做你需要做的任何事情。

完成後,如果您確實需要NSAttributedString,請在NSMutableAttributedString上調用copy以獲取不可變副本。 (但是很難看出爲什麼你需要這樣做,因爲你總是可以傳遞一個NSMutableAttributedString,其中NSAttributedString是預期的。)

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)]; 

此外,您可以在範圍後,另一條線OT文本

[mutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"other description"]]; 

輸出

firstname lastname其他描述