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会影响视图的实际背景,还是完全不同的图层?如果视图的背景颜色clearColor仍然drawRect显示?

4

1 回答 1

0

子层掩盖了其超层的内容。如果您覆盖drawRect:以绘制内容,则该内容将被渐变层遮盖。

如果你想在你的(视图)内容后面绘制渐变,你应该在你的drawRect:而不是使用子层中绘制渐变,或者使用包含渐变层和你的drawRect:-using 内容视图的容器视图,以及你的内容视图在上面。

此外,如果您希望渐变层覆盖您的视图,最layer.frame好像这样初始化:

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