如何在不使用多个标签的情况下显示具有不同字体的多行文本

时间:2013-10-03 08:26:22

标签: ios

我必须显示一个包含粗体字的文字段落。离。

enter image description here

如果我使用不同的标签,那么在更改方向时,它不会正确调整大小。

任何人都可以告诉我最好的方法是什么。

3 个答案:

答案 0 :(得分:1)

您必须使用NSAttributedString并将其分配给UITextField,这是一个示例:

UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize];
UIFont *regularFont = [UIFont systemFontOfSize:fontSize];

NSMutableAttributedString *myAttributedString = [[NSMutableAttributedString alloc] initWithString:yourString];
[myAttributedString addAttribute:NSFontAttributeName
                      value:boldFont
                      range:NSMakeRange(0, 2)];
[myAttributedString addAttribute:NSFontAttributeName
                      value:regularFont
                      range:NSMakeRange(3, 5)];
[self.description setAttributedText:myAttributedString];

在此处查找所有文档:

NSAttributedString

答案 1 :(得分:1)

您可以使用NSAttributedString使用UITextView(查看apple doc

你有一个如何使用它的解释here

您可以找到单词的范围并更改字体或颜色或使用以下内容:

- (IBAction)colorWord:(id)sender {
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:self.text.text];

    NSArray *words = [self.text.text componentsSeparatedByString:@" "];

    for (NSString *word in words) 
    {        
        if ([word hasPrefix:@"@"]) 
        {
            NSRange range=[self.text.text rangeOfString:word];
            [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range];           
        }
    }
    [self.text setAttributedText:string];
}

答案 2 :(得分:0)

对于您的情况,您可以使用webView并使用字符串加载它:

[webView loadHTMLString:[NSString stringWithFormat:@"<html><body style=\"background-color: transparent;\">This is <b><i>Test</b></i> dummy text ..</body></html>"] baseURL:nil];