1

UITableViewCellスタイルが「グループ化」に設定されていて、セルがセクションの最初または最後のセルである場合、カスタム グラデーション背景を描画するのに問題があります。私のアプローチは、単純に を作成してCAGradientLayer、次のようにビューに追加することです。

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = rect;
gradient.colors = [NSArray arrayWithObjects:(id)[_backgroundColorLight CGColor], (id)[_backgroundColorDark CGColor], nil];
[self.backgroundView.layer insertSublayer:gradient atIndex:0];
self.backgroundView.layer.masksToBounds = YES;

残念ながら、これにより次のようなセルが生成されます。エッジを超える背景

背景をセルのボーダーに合わせる方法についてのヒントはありますか?

ありがとう
–f

4

2 に答える 2

2

カスタム背景を描画する場合は、境界線も自分で描画する必要があります。そこにはかなりのオープンソースのものがあります。

基本的に、[セル内で]それがトップ/ミドル/ボトム/シングルかどうかを知り、drawRect でそれらをカットする必要があります。insertSublayer では遠くまで行けません。

ここにある PageCellBackground クラスをチェックしてください: http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

于 2011-09-16T07:19:26.457 に答える
1

試したことはありませんが、CAGradientLayer はたまたま CALayer のサブクラスであるため、borderRadius を設定するとうまくいく可能性があります。ただし、すべての角が丸くなるため、レイヤーをセルよりも大きくし、セルビューでそれを切り取ることでそれを補うことができます.

CALayers を使用して Rounded UIView を見てください- 一部のコーナーのみ - どのように? その他の例

于 2011-09-16T08:07:28.273 に答える