如何计算UILabel线中可以有多少个字符?

时间:2014-04-25 10:50:06

标签: ios objective-c uitableview

我想为细胞制作一个动态高度UITableview。在每个单元格中,我显示的是不同文本的消息。现在我希望我的表格单元格符合消息的文本,并且单元格上的标签也应该显示文本。 我根据可以容纳在一行中的字符数使我的表格单元格变得灵活。但这是问题所在。不同的字母表占用不同的空间。所以,我无法计算出一行中有多少字母可以出现。对此有何建议???

5 个答案:

答案 0 :(得分:2)

试试这个:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{CGSize size;
        if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
            // code here for iOS 5.0,6.0 and so on
            CGSize fontSize = [text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17]];
            size = fontSize;
        }
        else {
            // code here for iOS 7.0
            NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                                  [UIFont fontWithName:@"Helvetica Neue" size:19], NSFontAttributeName,
                                                  nil];
            CGRect fontSizeFor7 = [text boundingRectWithSize:CGSizeMake(571, 500)
                                                     options:NSStringDrawingUsesLineFragmentOrigin
                                                  attributes:attributesDictionary
                                                     context:nil];
            size = fontSizeFor7.size;

        }return size.height +30 ;

    }

答案 1 :(得分:1)

您不想计算您的文字有多少个字符,只需使用以下方法计算高度:

h = [NSString stringWithFormat:@"%f",
                           [post.text boundingRectWithSize:CGSizeMake(298.0f, CGFLOAT_MAX)
                           options:(NSStringDrawingUsesLineFragmentOrigin)
                           attributes:[NSDictionary dictionaryWithObject:[UIFont fontWithName:@"Helvetica Neue" size:14.0]
                           forKey: NSFontAttributeName]
                           context:nil].size.height]

使用宽度为298和字体/字体大小。

答案 2 :(得分:0)

检查我的答案

Calculate UITableViewCell height to fit string

在这里,您必须根据文本计算标签的高度,然后设置为单元格的高度。

您可以使用此动态计算高度和宽度。

我希望它能帮到你

答案 3 :(得分:0)

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

  NSString * yourCellStr = @"The string you want to apply to your cell at this index path";
  CGSize maxLblSize = CGSizeMake(320, 200);
  CGSize expectedLblSize = [yourCellStr sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:maxLblSize lineBreakeMode:NSLineBreakByWordWrapping];

  return expectedLblSize.height;

}

答案 4 :(得分:-1)

请我的回答

UILabel *lbl = [[UILabel alloc] init];
 lbl.text = @"abcd";
 NSLog(@"count %lu",(unsigned long)[lbl.text length]);