我有一个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];
但这不起作用。
答案 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
的子图层。这包括其子视图。换句话说,如果v
是self.view
的子视图,则v.layer
是self.view.layer
的子图层,您可以通过重新排列子图层数组在其子图层中对其进行排序。< / p>