1

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

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

我也比较self.frame.size.widthself.contentView.frame.size.width,两者看起来都是一样的,并不是分组单元格的实际宽度,我不相信。

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

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

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

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

4

1 回答 1

0

好的,我想出了一个很好的方法来实现这一点。如果您正在子类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);

}
于 2013-01-06T02:57:38.900 回答