【问题标题】:Calculate the width of a grouped tableview cell计算分组表格视图单元格的宽度
【发布时间】:2012-12-18 11:21:49
【问题描述】:

我试图将两个UILabel 放在UITableViewCell 内的同一垂直轴上,并让它们占据单元格宽度的 50%,当单元格是一个分组表时细胞。

我试过self.frame.size.width / 2,但self.frame.size.width 的宽度看起来像整个单元格的宽度,就好像它不是分组单元格一样。换句话说,它似乎是整个屏幕的宽度,在一个全屏表格中。

我还将self.frame.size.widthself.contentView.frame.size.width 进行了比较,两者看起来相同,并且不是分组单元格的实际宽度,我不相信。

当我用指定的框架初始化 UILabel 并将 x 轴 指定为 0 时,标签确实将自己放置在分组单元格的左边缘,即伟大的!这就是我想要的。

但是,对于我希望位于第一个标签右侧的第二个UILabel,在同一水平轴上,我不知道如何计算标签框架的 x 轴从哪里开始。

同样,我不知道如何计算这两个标签的宽度,因为我似乎无法获得分组单元格的宽度。

我觉得必须有一种方法来获得确切的宽度,因为对于第一个标签,给标签的框架一个 0 的 x 轴将它放在单元格的边缘,这正是我需要的。所以我需要像内部一样,这段代码也知道该单元格的宽度。

【问题讨论】:

  • 对于将label2 放在label1 旁边的问题,请将label1.frame.size.width 放在label2 框架的x 轴 位置。
  • 但是,如何将 label1 设为单元格宽度的一半?
  • 检查cell.contentView.frame.size.width 是否有效。还将标签添加到cell.contentView 而不仅仅是cell

标签: uitableview uilabel


【解决方案1】:

好的,我想出了一个实现这一目标的好方法。如果您要对UITableViewCell 进行子类化并且想要调整单元格的子视图,那么您需要在layoutSubviews: 方法内执行这些计算和框架调整。在此方法中,单元格的 contentView 将是预期的宽度,即使在使用分组单元格时也是如此。下面是我的layoutSubviews 函数的样子...

- (void)layoutSubviews {

    [super layoutSubviews];

    // half of the cell's content view width
    CGFloat halfCellWidth = self.contentView.frame.size.width / 2;

    // the dimensions of the message label, primarily for the height
    CGSize mesageLabelDimensions = [_message.text sizeWithFont:[UIFont systemFontOfSize:12]
                                             constrainedToSize:CGSizeMake(self.contentView.frame.size.width - (LEFT_RIGHT_MARGIN * 2), 500.0)];

    // adjust the frames of the cell labels
    _source.frame = CGRectMake(LEFT_RIGHT_MARGIN, TOP_BOTTOM_MARGIN, halfCellWidth - LEFT_RIGHT_MARGIN, LABEL_LINE_HEIGHT);
    _timestamp.frame = CGRectMake(halfCellWidth, TOP_BOTTOM_MARGIN, halfCellWidth - LEFT_RIGHT_MARGIN, LABEL_LINE_HEIGHT);
    _message.frame = CGRectMake(LEFT_RIGHT_MARGIN, LABEL_LINE_HEIGHT + (TOP_BOTTOM_MARGIN * 2), mesageLabelDimensions.width, mesageLabelDimensions.height);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多