2012-09-09 14 views
5

Creé una "TransformView" subclasificación UIView para admitir una vista de doble cara que estoy usando en una animación invertida. Esto ha sido sugerido en otras críticas, por ejemplo:Uso de la advertencia CATransformLayer: cambiar la propiedad opaque en la capa de solo transformación, no tendrá efecto

How to rotate a flat object around its center in perspective view?

@interface TransformView : UIView 
@end 

@implementation TransformView 
+ (Class)layerClass { 
    return [CATransformLayer class]; 
} 
@end 

Todo funciona bien, pero me da un aviso cada vez que se crea un objeto TransformView usando:

TransformView *newTransformView=[[TransformView alloc] initWithFrame:frame]; 

La advertencia dice:

- cambio de propiedad opaque en capa de solo transformación, w enfermos no tienen efecto

supongo que la clase UIView se está inicializando la propiedad opaca que es por lo general muy bien para un CALayer pero no un CATransformLayer.

¿El código de subclases es bastante dudoso? Si es así, ¿de qué otro modo puede crear una vista de dos lados para las animaciones de volteo?

¿Alguna idea de cómo detener la advertencia?

Tengo la sospecha de que la creación de un TransformView desde un archivo de punta en lugar de initWithFrame evita la advertencia, pero parece complicado tener que hacer esto solo para evitar la advertencia.

+0

Archivado como [rdar: // 23069576] (https://openradar.appspot.com/23069576) –

Respuesta

3

Tu puede evitar el aviso mediante la adición de esta extensión en algún lugar de su código:

@implementation CATransformLayer (MyExtension) 
-(void)setOpaque:(BOOL)opaque 
{ 
    return; 
} 
@end 

Por supuesto, esto también se detendrá la advertencia para sus propios intentos fallidos de establecer la propiedad opaca de un CATransformLayer.

Cuestiones relacionadas