【问题标题】:How to get number of line in UILabel when it's create using Auto Layout使用自动布局创建UILabel时如何获取UILabel中的行数
【发布时间】:2016-11-16 07:01:13
【问题描述】:

我在UITableViewCell 中使用自动布局创建了一个UILabel,它会在分配文本时自动设置行数。

但是我怎样才能找到标签中的行数

lblDesc.text = [self strClearTextMessage:[distSmartcategoryDetil objectForKey:@"description"]]; 

CGRect textRect = [lblDesc.text boundingRectWithSize: CGSizeMake(292*screenScal, 9999) options: NSStringDrawingUsesLineFragmentOrigin attributes: @{NSFontAttributeName: lblDesc.font} context: nil]; 

CGSize size = textRect.size; 

int numberOfLines = size.height / 12.0 * screenScal;
NSLog(@"numberOfLines %d",numberOfLines);

我尝试了很多行代码,但无法获得完美的行数

【问题讨论】:

  • 您的标签宽度是固定的吗?即 292

标签: objective-c uilabel ios-autolayout


【解决方案1】:

试试这个:

[label setNumberOfLines:0];
[label setLineBreakMode:NSLineBreakByWordWrapping];
[label sizeToFit];
float numLines = label.frame.size.height / label.font.lineHeight;
NSLog(@"numLines %f", numLines);

【讨论】:

    【解决方案2】:

    谢谢大家

    使用 ceil 函数我得到了完美的线条。

    int numberOfLines = ceil(textRect.size.height / lblDesc.font.lineHeight);
    

    【讨论】:

    • 请注意,如果您的文本包含表情符号,这将失败。
    • @OlDor 那么我该如何实现这一点。你能帮助获得带有约束(自动布局)设计的 UILable 行数吗?
    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多