Cocoa touch UITableViewCellStyleValue2样式的单元格上detailTextLabel的宽度

Cocoa touch UITableViewCellStyleValue2样式的单元格上detailTextLabel的宽度,cocoa-touch,uitableview,multiline,Cocoa Touch,Uitableview,Multiline,我不熟悉堆栈溢出和cocoa touch开发 我正在尝试使用带有多行detailTextLabel的UITableViewCellsTyleValue2构建UITableViewCell 因此,我实现了tableView:heightForRowAtIndexPath:如下所示: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ if (indexPa

我不熟悉堆栈溢出和cocoa touch开发

我正在尝试使用带有多行detailTextLabel的UITableViewCellsTyleValue2构建UITableViewCell

因此,我实现了tableView:heightForRowAtIndexPath:如下所示:

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

 if (indexPath.row != 4) {
  return tableView.rowHeight;
 }

 NSString *text = toDoItem.note;
 UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
 CGSize withinSize = CGSizeMake(167, 1000);
 CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeCharacterWrap];

 CGFloat height = size.height + 26;

    return height;    
}
我发现detailTextLabel的宽度大约为167px,但我想知道它的确切位置,不喜欢硬编码(考虑到方向的变化)

我试图访问detailTextLabel的帧或边界,但其宽度返回0.0


谢谢你的帮助

创建自定义单元格

您可以在UITableViewCell的自定义实现中定义一组静态变量,该变量在
布局子视图
中设置这些类型的参数。请务必先调用
[super layoutSubviews]

通过这种方式,您可以继承设备默认设置,您无需怀疑。
好的,单元格宽度是self.contentView.frame.size.width。您可以使用
self.textlab.frame.size.width
self.detailtextlab.frame.size.width
,以及
self.accessoryView.frame.size.width
+填充来计算细节。我并不是百分之百地相信。但是,您可以通过检测标签宽度和contentView帧宽度之间的差异来计算填充

对不起。我忘记了单元格的
detailTextLabel
维度总是在变化;而且绝对不可依赖。您可以根据所属UIViewController的宽度以及单元格
textLabel
导出标签宽度。由于计算是在控制器级别进行的,因此您将知道是否对tableView进行了分组。如果是这样,您只需将宽度向后缩放0.8倍左右,然后减去
textlab
width


同样,对于字体:
self.textlab.font.pointSize
,和
self.detailtextlab.font.pointSize
,谢谢你的回答,但实际上我不想:-)。我无法想象不可能计算出标签的宽度,因为它显然有一个固定的宽度。这对我来说很好。