Ios 如何计算UILabel行中可以包含多少个字符?
我想制作一个带有单元格动态高度的Ios 如何计算UILabel行中可以包含多少个字符?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我想制作一个带有单元格动态高度的UITableview。在每个单元格中,我显示一条不同文本的消息。现在,我希望我的表格单元格符合消息的文本,并且单元格上的标签应该显示文本。 我正在根据一行中可以容纳的字符数使表格单元格灵活。但问题是。不同的字母表占用不同的空间。因此,我无法计算一行中可以包含多少个字母。对此有什么建议吗?检查我的答案 在这里,您必须根据文本计算标签的高度,然后设置为单元格的高度 可以使用此选项动态计算高度和宽度 我希望它能帮助你请给出我下面的答案 UILabel *lbl =
UITableview
。在每个单元格中,我显示一条不同文本的消息。现在,我希望我的表格单元格符合消息的文本,并且单元格上的标签应该显示文本。
我正在根据一行中可以容纳的字符数使表格单元格灵活。但问题是。不同的字母表占用不同的空间。因此,我无法计算一行中可以包含多少个字母。对此有什么建议吗?检查我的答案
在这里,您必须根据文本计算标签的高度,然后设置为单元格的高度
可以使用此选项动态计算高度和宽度
我希望它能帮助你请给出我下面的答案
UILabel *lbl = [[UILabel alloc] init];
lbl.text = @"abcd";
NSLog(@"count %lu",(unsigned long)[lbl.text length]);
试试这个:
-(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 ;
}
您不想计算文本的字符数,只需使用以下方法计算高度:
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的宽度和字体/fontsize。发布您尝试过的代码。希望有一些处理字体的类。您不需要使用字体etcy计算所使用的每个字符:[ourText sizeWithFont:font constrainedToSize:ConstrainetSize lineBreakMode:UILineBreakModeWordWrap];此方法已被弃用。是的,我知道。。。但它适用于7.0以下的ios版本。对于其他,您可以找到它的替代品。我已经给了你线索:)sizeWithFont方法是不推荐的。它在iOS 7上运行良好,但在iOS 6why+30上不工作<代码>尺寸.高度+30
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]