Ich habe eine UIViewController
, wo ich einen Hintergrundgradienten mit
es funktioniert gut, später muss ich die Unteransicht _selectionFrame
meines View-Controllers zurücksenden:
(Oft muss ich das _selectionFrame
nach hinten und nach vorne senden, für den Zweck der Animation und Zeichnung)
self
ist der ViewController:
Dies sendet jedoch das _selectionFrame
hinter dem gradient
. Ich möchte es nur über dem Gradienten, aber unter jeder anderen Unteransicht. Das Problem ist, dass der Gradient keine Ansicht ist, also kann ich die Funktionen für den Gradienten nicht verwenden.
Ich möchte [self.view sendSubviewToBack:gradient];
Aber das funktioniert nicht.
Die einfachste Lösung besteht darin, den Gradientenlayer nicht als Unterschicht von self.view.layer
einzufügen. Stattdessen sollte self.view.layer
sein. Eine UIView-Unterklasse hat eine Klassenmethode layerClass
, mit der Sie sagen können, welche Klasse ihre Ebene sein soll.
Oder es könnte der Layer einer anderen Unteransicht von self.view
sein, wieder leicht angeordnet, indem die gleiche Klassenmethode layerClass
verwendet wird.
Andernfalls müssen Sie Layer-Befehle verwenden, keine Befehle anzeigen, um die Sublayer von self.view
zu ordnen. Das schließt seine Unteransichten ein. Mit anderen Worten, wenn v
eine Unteransicht von self.view
ist, dann ist v.layer
eine Unterschicht von self.view.layer
und Sie können sie in den Sublayern ordnen, indem Sie das Sublayer-Array neu anordnen.
Tags und Links ios core-animation cocoa-touch cagradientlayer