5 Stimmen

bringSubviewToFront für CALayer

Ich frage mich, ob es eine Möglichkeit gibt, eine Ebene über eine andere Ansichtsebene zu legen. Etwas wie bringSubviewToFront tut für UIView Klasse. Ich denke, das kann man machen mit zPosition Eigenschaft der CALayer aber das bedeutet, dass ich prüfen muss zPosition für alle Ebenen und stellen Sie dann den richtigen Wert ein.

Vielen Dank im Voraus.

4voto

ianh Punkte 815

Ich glaube, dass der Code (angesichts der Tatsache, dass layer ist Ihr CALayer )

[layer retain];
CALayer *superlayer = layer.superlayer;
[layer removeFromSuperlayer];
[superlayer addLayer:layer];
[layer release];

wird das tun, was Sie wollen, wenn auch auf Umwegen.

4voto

hkatz Punkte 913

Es ist sogar noch einfacher. Wenn sublayerToBeMovedToFront ist die Ebene, die Sie verschieben, und itsSuperLayer ist, nun ja, seine Superschicht, sagen wir mal:

[itsSuperLayer addSublayer:sublayerToBeMovedToFront];

El addSublayer Anruf gleichzeitig aushaken sublayerToBeMovedToFront von der Stelle, an der sie sich in der Geschwisterliste befand, und hakt sie als letzte (d. h. am weitesten vorne liegende, visuell "oben" liegende) Teilschicht ein. Dies ist ein genau analoges Verhalten zu dem von [ aUIView addSubview:]

1voto

Alex Gray Punkte 15268

Diese Kategorie wird das erreichen, was Sie meinen

CALayer+Additions.h

#import <Foundation/Foundation.h>
#import <QuartzCore/CALayer.h>
@interface CALayer (Additions)
- (void)moveToFront;
@end

CALayer+Additions.m

#import "CALayer+Additions.h"
@implementation CALayer (Additions)
- (void)moveToFront {
    CALayer *superlayer = self.superlayer;
    [self removeFromSuperlayer];
    [superlayer addSublayer:self];
}
@end

#import "CALayer+Additions.h" in Ihrem Projekt, und Sie werden eine neue Methode finden, moveToFront ist jetzt verfügbar für Ihre CALayer Instanzen.

0voto

Pedro Soares Punkte 1022

Wenn Sie Folgendes verwenden CALayer für die Leistung sollten Sie auch versuchen, nur UIImageView 's. In meinem Fall stellte sich heraus, dass es ein paar FPS schneller war. (vielleicht durch die UIImage a CGImage Umwandlung, die ich bei jeder Bildzuschreibung durchführen musste)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X