Objective c label.numberOflines不起作用

时间:2016-11-14 11:34:58

标签: objective-c uilabel

无论我将行数设置为0还是100,它都不会改变,文本仍然是......最后。我已经尝试过NSLineBreakByWordWrapping,但它只是删除了......并且什么都不做。

UILabel *label = [[UILabel alloc] init];
[cell.contentView addSubview:label];
label.text = myString;
label.frame = CGRectMake(17, 42, 200, 30);
[label sizeToFit];
label.lineBreakMode = NSLineBreakByWordWrapping;
label.numberOfLines = 0;

1 个答案:

答案 0 :(得分:3)

使用此

UILabel *label = [[UILabel alloc] init];

label.text = @"myStringsdsdvsvdsdvsdvsdndbndbnbdnbdnbdnpopopoploplklioolnhbfghrmyString";

label.numberOfLines = 0;
label.frame = CGRectMake(0, 50, 320, 568);

[self.view addSubview:label];

label.frame = CGRectMake(0, 42, [self widthForLabel:label withText:label.text], [self height:label withText:label.text]);

label.backgroundColor = [UIColor redColor];

表示动态宽度

-(CGFloat)widthForLabel:(UILabel *)label withText:(NSString *)text
{
    if (text.length > 0)
    {
        NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:label.font}];
        CGRect rect = [attributedText boundingRectWithSize:(CGSize){label.frame.size.width, CGFLOAT_MAX}
                                                   options:NSStringDrawingUsesLineFragmentOrigin
                                                   context:nil];

        return ceil(rect.size.width);

    }

return 0;

}

表示动态高度

  -(CGFloat)height:(UILabel *)label withText:(NSString *)text
{
    if (text.length > 0)
    {
        NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:label.font}];
        CGRect rect = [attributedText boundingRectWithSize:(CGSize){label.frame.size.width, CGFLOAT_MAX}
                                                   options:NSStringDrawingUsesLineFragmentOrigin
                                                   context:nil];

        return ceil(rect.size.height);
    }

    return 0;
}

enter image description here

这里的问题是你需要用这样的框架来初始化标签

    label.frame = CGRectMake(0, 50, 320, 568);

现在,当您在视图中添加标签时,请计算标签的动态宽度和高度,然后再次设置框架。

希望它能奏效。