0

カスタム テーブル セル クラスで四角形を描画するにはどうすればよいですか? セルには現在、いくつかのテキスト ラベルが付いた背景画像があります。詳細な背景画像を読みやすくするために、各ラベルの後ろに長方形を描画したいと思います。

ラベルの背景色を設定できることはわかっていますが、背景色とテキストの間にパディングが必要です。もし可能でしたら、その方法を教えていただきたいです!:)

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];
4

1 に答える 1

1

ラベルをビューに追加し、これらをセルに追加できます。

insertSubview:belowSubview:ラベルの背後にビューを追加するために使用できます。backgroundColor と適切なフレームを使用すると、意図したとおりに動作します。

detailLabel を前面に出すこともできます

于 2011-06-23T00:15:52.727 に答える