カスタム テーブル セル クラスで四角形を描画するにはどうすればよいですか? セルには現在、いくつかのテキスト ラベルが付いた背景画像があります。詳細な背景画像を読みやすくするために、各ラベルの後ろに長方形を描画したいと思います。
ラベルの背景色を設定できることはわかっていますが、背景色とテキストの間にパディングが必要です。もし可能でしたら、その方法を教えていただきたいです!:)
Three20 で TTTableMessageItemCell をサブクラス化しています。以下のメソッドが呼び出され、セルのサブビューで遊ぶことができます。
- (void)layoutSubviews {
[super layoutSubviews];
CGFloat padding = 16;
CGFloat boxWidth = self.contentView.width - 2*padding;
CGFloat textWidth = boxWidth - (padding*2);
CGFloat textHeight = 100;
CGFloat top = kTableCellSmallMargin;
// Position Heading Text
_titleLabel.frame = CGRectMake(padding, top, textWidth, _titleLabel.font.ttLineHeight);
top += _titleLabel.height;
// Position Detail Text
[self.detailTextLabel sizeToFit];
self.detailTextLabel.top = top+2*padding;
self.detailTextLabel.left = 2*padding;
self.detailTextLabel.width = textWidth;
self.detailTextLabel.height = 100;
}
長方形を _titleLable および detailTextLabel ラベルの後ろに配置したいと思います。
編集 次を使用して適切なボックスを追加できました。
UIView *view = [[UIView alloc] init]; view.backgroundColor = [UIColor whiteColor]; view.frame = CGRectMake(padding, top, textWidth, textHeight+2*padding); [self insertSubview:view belowSubview:self.detailTextLabel];
それはラベルの上に置かれていて、その背後にあるようには見えません...
編集 ビューを間違ったサブビューに追加していましたが、次のように修正しました。
[[self.subviews objectAtIndex:0] insertSubview:view atIndex:0];