我使用UITableViewController的子类。在此表中,我使用样式为UITableViewCellStyleDefault
的标准单元格。此样式包含textLabel
。我将一些文本分配给它的text-property,然后我需要文本的长度(以磅为单位):
cell = [tableView dequeueReusableCellWithIdentifier:@"CellID"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellID"];
}
cell.textLabel.text = @"some text";
textWidth = [cell.textLabel.text sizeWithFont:cell.textLabel.font].width;
NSLog(@"text width = %f",textWidth);
NSLog(@"Font = '%@'",cell.textLabel.font);
但是当我执行此代码时,它返回宽度0.00000:
text width = 0.000000
Font = '<UICFFont: 0x68b4a90> font-family: "Helvetica"; font-weight: bold; font-style: normal; font-size: 0px'
我必须做什么才能获得此文本的实际宽度(通常显示的宽度和宽度不为0)
修改
当我插入代码为if (cell.font){}
的行时,我会得到正确的大小和宽度:
cell = [tableView dequeueReusableCellWithIdentifier:@"CellID"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellID"];
}
cell.textLabel.text = @"some text";
// added line:
if (cell.font){}
textWidth = [cell.textLabel.text sizeWithFont:cell.textLabel.font].width;
NSLog(@"text width = %f",textWidth);
NSLog(@"Font = '%@'",cell.textLabel.font);
显示:
text width = 98.000000
Font = '<UICFFont: 0x68dc400> font-family: "Helvetica"; font-weight: bold; font-style: normal; font-size: 20px'
但不推荐使用单元格的getter“font”。是否有一种不推荐使用的方法来获取fontsize / textwidth?
答案 0 :(得分:0)
同样烦人的问题。这似乎有效:
[cell layoutIfNeeded];
但不是......相当。由于一些奇怪的原因,它调整了字体大小,从大约17到大约20。
使用[UIFont boldSystemFontOfSize:[UIFont labelFontSize]]
。
答案 1 :(得分:-1)
通过明确设置字体大小,您可以获得文本标签的宽度。
CGSize textLabelSize = [textLabel.text sizeWithFont:[UIFont systemFontOfSize:17]];
以下是可能有用的链接:dynamic calculation of UILabel width in UITableViewCell
希望它有所帮助! :)