UITableViewCellStyleValue1のラベルの幅を調整する

UITableViewCellでスタイルにUITableViewCellStyleValue1を指定した場合に、textLabelに設定する文字列が長いと、detailTextLabelの文字が表示されなくなってしまいます。どうやらこれはそういうものみたいですが、隠れるのは嫌なのでUITableViewCellのサブクラスを作って対応してみました。

- (void)layoutSubviews {
    [super layoutSubviews];

    // detailLabelの横幅を定義する。
    CGFloat detailWidth = 100;

    CGRect textRect = self.textLabel.frame;

    // CGRectGetMinX(self.contentView.frame)を引いているのは、左上のEditボタンを押した際のずれに対応するため。
    textRect.size.width = CGRectGetWidth(self.frame) - detailWidth - CGRectGetMinX(textRect) * 2 - CGRectGetMinX(self.contentView.frame);
    self.textLabel.frame = textRect;

    CGRect detailTextRect = self.detailTextLabel.frame;
    detailTextRect.origin.x = CGRectGetMaxX(textRect);
    detailTextRect.size.width = detailWidth;
    self.detailTextLabel.frame = detailTextRect;

}

汎用的には作っていませんが、これで要件は満たせるので、動作に問題なければよしとします。

この記事が役に立った場合、シェアしていただけると励みになります!!