设置UILabel的归属文本导致Longy内容出现问题

时间:2014-04-22 15:14:17

标签: ios objective-c uilabel nsattributedstring

在我的项目中,我想在放置在xib上的UILabel中添加一个属性文本。 它工作得很好,但是如果出现大文本则显示出一些问题。

我目前的实施:

- (void)viewDidLoad
{
    [super viewDidLoad];
    _demoLabel.numberOfLines = 0;
    _demoLabel.lineBreakMode = NSLineBreakByWordWrapping;
    _demoLabel.attributedText = [self demoNameWithFontSize:21 andColor:[UIColor redColor]];

}

- (NSMutableAttributedString *)demoNameWithFontSize:(CGFloat)fontSize andColor:(UIColor *)color
{
    NSMutableAttributedString *attributedText = nil;
    NSString *demoName = @"Blah blah blah";
    UIFont  *demoFont  = [UIFont fontWithName:@"Zapfino" size:fontSize];
    attributedText = [[NSMutableAttributedString alloc] initWithString:demoName];
    NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
    paragraph.lineBreakMode = NSLineBreakByWordWrapping;
    [attributedText addAttribute:NSParagraphStyleAttributeName value:paragraph range:NSMakeRange(0, [demoName length])];
    [attributedText addAttribute:NSFontAttributeName value:demoFont range:NSMakeRange(0, [demoName length])];
    [attributedText addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, [demoName length])];

    return attributedText;
}

输出:

Zapfino

问题:

即使我应用NSMutableParagraphStyle,它也不会显示整个文本。 我该如何解决这个问题?

替代方案我发现:

如果我改变

UIFont  *demoFont  = [UIFont fontWithName:@"Zapfino" size:fontSize];

UIFont  *demoFont  = [UIFont systemFontOfSize:fontSize];

它会工作并提供如下输出:

System

但问题是我需要使用自定义字体,不能使用默认字体。也无法改变字体大小。

我检查了UILabel类引用并用Google搜索,但无法找到解决方案。请帮我。 无论如何都要将这个文本跨越多行?

1 个答案:

答案 0 :(得分:0)

您需要调整UILabel的大小以适合文本。

您可以使用boundingRectWithSize:options:context: NSAttributedString类方法计算大小,该方法采用属性字符串并根据字符串的所有属性计算set rect中的大小。