在这个伟大的社区的帮助下,我已经在这里工作了几天。
我需要NSArray
来编辑NSStrings
。我已设法检测字符串中的标记并使其变为粗体。但是现在我试图按照它们在NSArray中的顺序显示字符串,同时保持添加到特定字符串的Bold。
我可以显示单独的粗体字符串'string
',但我需要它才能使它在数组中。我知道stringByAppendingString
,但这会把它放在最后。
任何方向都会很棒。
for (NSString *testWord in legislationArray) {
if ([testWord rangeOfString:@"BOLDME"].location != NSNotFound) {
//Remove Marker
NSString *stripped = [testWord stringByReplacingOccurrencesOfString:@"BOLDME" withString:@""];
//Get string and add bold
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:stripped];
NSRange selectedRange = [stripped rangeOfString:(stripped)];
[string beginEditing];
[string addAttribute:NSFontAttributeName
value:[UIFont fontWithName:@"Helvetica-Bold" size:18.0]
range:selectedRange];
[string endEditing];
//Where to go now with string?
}
}
cell.dynamicLabel.text = [legislationArray componentsJoinedByString:@"\n"];
修改
基于下面的答案,我得到了它的工作,但粗体方法调用此错误:
答案 0 :(得分:3)
componentsJoinedByString
时, NSString
会返回NSAttributedString
。
此外,您还要将文字设置为等待NSString
(cell.dynamicLabel.text
)的接收者,其中您想要的内容应为cell.dynamicLabel.attributedText
。
由于componentsJoinedByString
返回不等同于NSAttributedString
,因此必须使用for
循环执行此操作,从初始化NSMutableAttributedString
开始,并向其添加每个组件(您可以"转换")。
Here是一个示例和相关问题。
答案 1 :(得分:1)
只需使用其他数组。将您的代码更改为
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] init];
for (NSString *testWord in legislationArray) {
if ([testWord rangeOfString:@"BOLDME"].location != NSNotFound) {
//Remove Marker
NSString *stripped = [testWord stringByReplacingOccurrencesOfString:@"BOLDME" withString:@""];
//Get string and add bold
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:stripped];
NSRange selectedRange = [stripped rangeOfString:(stripped)];
[string beginEditing];
[string addAttribute:NSFontAttributeName
value:[UIFont fontWithName:@"Helvetica-Bold" size:18.0]
range:selectedRange];
[string endEditing];
//Where to go now with string?
[attrString appendAttributedString:string];
}
else
{
[attrString appendAttributedString:[[NSAttributedString alloc] initWithString:testWord]];
}
// NEW LINE
[attrString appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];
}
cell.dynamicLabel.attributedText = attrString;
更新:
您的其他问题不是错误 - 这是XCode在调试窗口中显示属性字符串的方式: