CAGradientLayer发回

时间:2013-06-22 00:34:51

标签: ios cocoa-touch core-animation cagradientlayer

我有一个UIViewController,我用

创建了一个背景渐变
    CAGradientLayer *gradient = [CAGradientLayer layer];
    ...
    gradient.frame = frame;
    self.backGradient = gradient;
    [self.view.layer insertSublayer:gradient atIndex:0];

它工作正常,后来我必须将我的视图控制器的子视图_selectionFrame发送回来:
(我经常需要将_selectionFrame发送回前面,前面,用于动画和绘图目的)

self是viewController:

[self.view sendSubviewToBack:_selectionFrame]; 

然而,这会在_selectionFrame后面发送gradient。我希望它只是在渐变之上但在每个其他子视图之下。问题是渐变不是视图,所以我不能使用渐变函数 我想致电[self.view sendSubviewToBack:gradient];

但这不起作用。

3 个答案:

答案 0 :(得分:14)

创建仅包含渐变的视图

答案 1 :(得分:9)

.layer有一个sublayers属性,它是一个简单的数组。所以你可以插入你想要的任何索引。如果您希望新图层位于后面,只需将其插入0,如下所示:

ng-repeat="(key, value) in reports"

答案 2 :(得分:3)

最简单的解决方案是不要将渐变图层作为self.view.layer的子图层插入。相反,它应 self.view.layer。 UIView子类有一个类方法layerClass,可以让你说出它的图层应该是什么类。

或者,它可以 self.view的其他子视图的图层,再次使用相同的类方法layerClass轻松排列。

否则,您必须使用图层命令而不是视图命令来订购self.view的子图层。这包括其子视图。换句话说,如果vself.view的子视图,则v.layerself.view.layer的子图层,您可以通过重新排列子图层数组在其子图层中对其进行排序。< / p>