具有清晰背景和自定义渐变图层的DrawRect

时间:2012-08-07 05:37:24

标签: objective-c uiview uikit

如果您执行以下操作,请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是否仍会显示?

1 个答案:

答案 0 :(得分:0)

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

如果要在(视图)内容后面绘制渐变,则应在drawRect:中绘制渐变而不是使用子图层,或者使用包含渐变图层和{的渐变图像的容器视图{1}} - 使用内容视图,将您的内容视图放在首位。

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

layer.frame