使用 CAGradientLayer 和 drawRect:(CGRect) 绘制顺序

Posted

技术标签:

【中文标题】使用 CAGradientLayer 和 drawRect:(CGRect) 绘制顺序【英文标题】:Draw order using CAGradientLayer & drawRect:(CGRect) 【发布时间】:2014-12-03 12:06:37 【问题描述】:

我的视图覆盖了drawRect 方法来渲染graphics

我最近使用CAGradientLayer[view.layer insertSubLayer: atIndex:0] 添加了渐变背景

但是CAGradientLayer 被绘制在我的图形上而不是在下面。 将渐变颜色的 alpha 设置为 0.5 表明我的图形仍在绘制中。

这是一款具有高图形刷新率的应用,我无法在每次刷新时重绘渐变,因此我指望CAGradientLayer's 后备存储来保持性能。

我应该如何处理这个问题?

谢谢!

【问题讨论】:

【参考方案1】:

子层总是绘制在基础层之上,就像子视图总是绘制在基础视图之上。

您可以尝试在超级视图级别工作,并为其添加渐变子图层。它将显示在您的视图下方。

【讨论】:

以上是关于使用 CAGradientLayer 和 drawRect:(CGRect) 绘制顺序的主要内容,如果未能解决你的问题,请参考以下文章

什么是 CALayer 和 CAGradientLayer?

使用 CAShapeLayer 创建的动画圆的 CAGradientLayer 问题

在 UITableViewCell 中使用时,CAGradientLayer 在 UIView 上溢出

没有显示 CAGradientLayer?

Swift 2.1:CAGradientLayer 颜色定位和分布

静态渐变图像与 CAGradientLayer?