有没有办法获取单元格的字幕长度(detailedTextLabel)?

Posted

技术标签:

【中文标题】有没有办法获取单元格的字幕长度(detailedTextLabel)?【英文标题】:Is there a way to obtain the length of the cell's subtitle (detailedTextLabel)? 【发布时间】:2011-10-22 09:05:24 【问题描述】:

正如问题中提到的,我想获取字幕的长度(topic.context)并用它来做出某些决定(见下面我的代码sn-p)

cell.detailTextLabel.text = topic.context;
NSString *fanLabelText = [NSString stringWithFormat:@"%i fans",topic.num_fans];

if (topic.context && ![topic.context isEqual:[NSNull null]] && topic.context.length > 46)

    thisFanLabel.frame = CGRectMake(320 - 150, -10, 100, 44);

else

    thisFanLabel.frame = CGRectMake(320 - 150, 0, 100, 44);

基本上,我想知道字幕什么时候会达到一定的长度,以便我可以调整粉丝标签向上移动(如下图所示)。目前粉丝标签与字幕重叠,我希望在发生这种情况时能够将标签向上移动。

那么获得准确的字幕长度的最佳方法是什么?

【问题讨论】:

如果你这样做肯定会看起来很糟糕?为什么不只使用较短的标签并截断任何长文本,或者将字幕文本放在两行上? 【参考方案1】:

您可以使用以下几行检查具有特定字体的字符串的大小:

CGSize maxSize = CGSizeMake(9999,9999);

UILabel *myLabel = cell.detailTextLabel;
CGSize sizeOfString = [myLabel.text sizeWithFont:myLabel.font 
                        constrainedToSize:maxSize 
                        lineBreakMode:myLabel.lineBreakMode]; 

在“sizeOfString”中,您现在应该有您的 detailLabel 的大小。

【讨论】:

【参考方案2】:

NSString-sizeWithFont:及相关方法。

【讨论】:

以上是关于有没有办法获取单元格的字幕长度(detailedTextLabel)?的主要内容,如果未能解决你的问题,请参考以下文章

单元格显示“公式短语错误”有没有办法获取单元格的内容?

字幕单元格的 Swift 自动行高

在Matlab中直接获取数组/单元格的元素[重复]

如何获得 UITableViewCell 字幕显示特定单元格被点击了多少次?

Qt C++ 从 QTableView 中获取选定行的每个单元格的数据

单元格的 detailTextLabel 未在 swift 3 中显示