1

this次のコードの参照であるカスタムボタンにグラデーションレイヤーを追加しています。

//a custom gradient
var layerGradient = new CAGradientLayer();

//the gradient colors are the base color to the modified version
layerGradient.Colors = new CGColor[]{color.CGColor, color2.CGColor};

//add the gradient as a sublayer in the button
this.Layer.InsertSublayer(layerGradient, 0);

これは正常に機能し、グラデーションは本来の機能を果たします。ただし、ボタンに背景画像がある場合、背景は表示されません。グラデーションは背景の上のレイヤーにあり、それを覆い隠しているように見えます。これを修正する方法はありますか、それとも自分のレイヤーに背景を描画して手動で追加する必要がありますか?

4

2 に答える 2

0

これを解決するには、背景画像を独自のレイヤーとして追加し、その下にグラデーションレイヤーを追加します。

mImageView = new UIImageView();
this.Layer.InsertSublayer(mImageView.Layer, 0);
mImageView.Image = mImage;

したがって、これにより、画像を保持するUIImageViewレイヤーが作成されます。次に、質問のようにコードを呼び出して、このImageViewレイヤーの下にグラデーションレイヤーを挿入すると、機能します。

于 2013-01-12T23:12:33.483 に答える
0

試したことはありませんが、おそらくinsertSublayer:below:あなたが探しているものです。

- (void)insertSublayer:(CALayer *)aLayer below:(CALayer *)sublayer
于 2013-01-12T01:36:57.717 に答える