1

セルがグループ化された表のセルである場合、セルUILabel内の同じ縦軸に2 つを配置UITableViewCellし、セルの幅の 50% を占めるようにしようとしています。

試してみましたが、グループ化されたセルではないかのように、セル全体の幅のように見える幅self.frame.size.width / 2self.frame.size.widthつまり、全画面テーブルで、画面全体の幅のようです。

私も比較self.frame.size.widthしてself.contentView.frame.size.width、両方とも同じように見え、グループ化されたセルの実際の幅ではないと思います。

UILabel指定したフレームでを初期化し、 x 軸を に指定する0と、ラベルはグループ化されたセルの左端に配置されます。これはすばらしいことです。それが私が欲しいものです。

しかし、UILabel同じ水平軸上で1番目のラベルの右側に配置したい2番目のラベルのフレームの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 に答える