UITableViewCellのbackgroundViewオーバーラップするcontentView

私は、UITableViewCellのbackgroundViewパラメータを設定しようとしていますが、backgroundViewはセルの境界をオーバーラップしています。私はmasksToBoundsをYESに設定しようとしましたが、それは違いはありません。私が間違っているところを教えてください。

ここに私の問題を示すイメージがあります:

enter image description here

ここに私のコードです:

UIImageView *iv = [[[UIImageView alloc] initWithFrame:cell.frame] autorelease];
[iv setImage:[UIImage imageNamed:@"paper"]];
[iv.layer setMasksToBounds:YES];
[cell.layer setMasksToBounds:YES];
[cell.contentView.layer setMasksToBounds:YES];
[cell setBackgroundView:iv];
1

2 答え

セルの境界が四角形であるため、 masksToBounds を使用しても機能しません。

セルの角が丸められても、セルの一部です(ただし、透明ピクセルが含まれています)。セルがグループ化されたテーブルビューで表示されるとき、そのセルの背景ビュー(およびその選択された背景ビュー)は、そのセクション内の位置(中央、上、下、単一)に関して描画されます。

したがって、カスタムの背景ビューを提供する場合は、セクション内のセルの位置を計算し、適切な背景を提供する必要があります。

  • 4つの異なる画像を使用することによって
  • または背景画像のレイヤのマスクプロパティを使用する
  • またはUIViewをサブクラス化してdrawRectを実装することで、画像が描画される前にグラフィックコンテキストがクリップされます。
1
追加された

バックグラウンドビューのすべてのセルを設定していますか?その場合は、単にテーブルビューの背景に設定するだけです。

0
追加された