CAGradientLayer enviar a la parte posterior

Tengo un UIViewController donde creo un gradiente de background con

  CAGradientLayer *gradient = [CAGradientLayer layer]; ... gradient.frame = frame; self.backGradient = gradient; [self.view.layer insertSublayer:gradient atIndex:0]; 

funciona bien, luego tengo que enviar la subvista _selectionFrame de mi controller de vista para volver:
(A menudo necesito enviar _selectionFrame para atrás y adelante, para fines de animation y dibujo)

self es el viewController:

 [self.view sendSubviewToBack:_selectionFrame]; 

Sin embargo, esto envía el _selectionFrame detrás del gradient . Lo quiero justo por encima del gradiente pero debajo de cada otra subvista. El problema es que el degradado no es una vista, por lo que no puedo usar las funciones para el degradado.
Me gustaría llamar a [self.view sendSubviewToBack:gradient];

Pero esto no funciona.

Cree una vista que contenga solo el degradado.

La solución más simple no es insert la capa de gradiente como una subcapa de self.view.layer . En cambio, debería ser self.view.layer . Una subclass UIView tiene un método class layerClass que le permite decir qué class debe ser su capa.

O bien, podría ser la capa de alguna otra subvista de self.view , nuevamente arreglada fácilmente usando el mismo método de class layerClass .

De lo contrario, tendrá que usar commands de capa, no commands de vista, para orderar las subcapas de self.view . Eso incluye sus subvenciones. En otras palabras, si v es una subvista de self.view , entonces v.layer es una subcapa de self.view.layer y puede orderarlo entre sus subcapas reorderando la matriz de subcapas.