简体   繁体   English

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

[英]Draw order using CAGradientLayer & drawRect:(CGRect)

My view overrides the drawRect method to render graphics . 我的视图覆盖了drawRect方法来渲染graphics

And I've recently added a gradient background using CAGradientLayer and [view.layer insertSubLayer: atIndex:0] 并且我最近使用CAGradientLayer[view.layer insertSubLayer: atIndex:0]添加了渐变背景

However the CAGradientLayer gets drawn over my graphics instead of underneath. 但是, CAGradientLayer会在我的图形上方而不是下方绘制。 Setting alpha of the gradient colours 0.5 shows that my graphics are still being drawn. 将渐变颜色的alpha设置为0.5表示我的图形仍在绘制中。

This is an app with a high graphics refresh rate, I cannot afford to redraw a gradient on every refresh so was counting on the CAGradientLayer's backing store to keep things performant. 这是一款具有高图形刷新率的应用程序,我无法在每次刷新时重绘渐变,因此一直依靠CAGradientLayer's后备存储来保持性能。

How should I approach this? 我应该如何处理?

Thank you! 谢谢!

Sublayers are always drawn on top of the base layer, much like subviews are always drawn on top of the base view. 子层始终绘制在基础层的顶部,就像子视图始终绘制在基础视图的顶部。

What you could try is work at the superview's level, and add a gradient sublayer to it. 您可以尝试在超级视图级别进行工作,并向其添加一个渐变子层。 It will be displayed below your view. 它将显示在您的视图下方。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM