2009-10-27 14 views
5

Me pregunto si hay una manera de poner capas encima de otras capas de vista. Algo como bringSubviewToFront hace para UIView clase. Creo que se puede hacer con zPosition propiedad del CALayer pero esto significa que tengo que marcar zPosition para todas las capas y luego establecer el valor correcto.bringSubviewToFront para CALayer

Gracias de antemano.

Respuesta

4

creo que el código (dado que es su layerCALayer)

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

va a hacer lo que quiere, aunque de una manera indirecta.

+0

Gracias a un botín. Eso es lo que necesito – Dmytro

+0

cómo cambiar el índice Z de dos capas? – Raptor

1

En esta categoría se logrará lo que está hablando ...

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" dentro de su proyecto, y encontrará un nuevo método, moveToFront ahora está disponible para sus instancias CALayer.

0

Si está usando CALayer para el rendimiento, también debería intentar usar solo UIImageView 's. En mi caso, resultó ser unos pocos FPS más rápido. (tal vez de la conversión UIImage a CGImage que necesitaba realizar en cada atribución de imagen)

3

Es aún más fácil. Si sublayerToBeMovedToFront es la capa que está en movimiento y se itsSuperLayer, así, su superlayer, sólo decir:

[itsSuperLayer addSublayer:sublayerToBeMovedToFront]; 

La llamada addSublayer desengancha simultáneamente sublayerToBeMovedToFront de dondequiera que se encontraba en la lista de hermanos y rehooks como el último (es decir, subcapa, situada más adelante, visualmente "en la parte superior"). Este es exactamente el comportamiento análogo al de [aUIView addSubview:]