CAGradiantLayer zurücksenden

8

Ich habe eine UIViewController , wo ich einen Hintergrundgradienten mit

erzeuge %Vor%

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:

%Vor%

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];

aufrufen

Aber das funktioniert nicht.

    
AlexWien 22.06.2013, 00:34
quelle

2 Antworten

13

Erstellen Sie eine Ansicht, die nur den Farbverlauf enthält

    
Khanh Nguyen 22.06.2013, 00:55
quelle
3

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.

    
matt 22.06.2013 00:53
quelle