0

UIViewのようにすると:

CAGradientLayer *layer = [CAGradientLayer layer];
layer.colors = [NSArray arrayWithObjects:(id) [UIColor colorWithRed:0 green:0 blue:0.1 alpha:1].CGColor,[UIColor colorWithRed:0.3 green:0.3 blue:0.74 alpha:1].CGColor, nil];
layer.frame=CGRectMake(0, 0, self.frame.size.width,self.frame.size.height);
[self.layer insertSublayer:layer atIndex:0];

drawRectこのグラデーションの上にカスタム描画を実行しますか? ビューの実際の背景に影響しますかdrawRect、それとも完全に別のレイヤーですか? ビューの背景色clearColordrawRectまだ表示されている場合は?

4

1 に答える 1

0

サブレイヤーは、そのスーパーレイヤーのコンテンツを覆い隠します。オーバーライドdrawRect:してコンテンツを描画すると、そのコンテンツはグラデーション レイヤーによって隠されます。

drawRect:(ビュー) コンテンツの背後にグラデーションを描画する場合は、サブレイヤーを使用する代わりにグラデーションを描画するか、drawRect:コンテンツ ビューでグラデーション レイヤーとコンテンツ ビューの両方を含むコンテナー ビューを使用する必要があります。上に。

また、グラデーション レイヤーでビューをカバーする場合は、次のlayer.frameように初期化することをお勧めします。

layer.frame = self.bounds;
于 2012-08-07T07:42:41.467 に答える