2009-10-09 7 views
16

Estoy implementando un UIButton personalizado con funcionalidad mínima. El archivo .h:UIButton.layer.cornerRadius no existe?

#import <Foundation/Foundation.h> 
@interface CustomButton : UIButton { 
} 
@end 

Estoy encontrando un error de compilación en la línea (A) en el archivo .m:

- (id)initWithCoder:(NSCoder *)coder { 
    if(self = [super initWithCoder:coder]) { 

     CALayer *layer = [self layer]; 
     NSLog(@"layer=%@",layer); 
     NSLog(@"delegate=%@",[layer delegate]); 

#ifdef __IPHONE_3_0 
     layer.cornerRadius = 4.0f; // (A) error: request for member 'cornerRadius' in something not a structure or union 
#endif 
    } 
    return self; 
} 

Si comento hacia fuera de línea (A), me sale el siguiente salida:

2009-10-08 17:35:06.681 MyApp[2596:4e07] layer=<CALayer: 0x3cdf520> 
2009-10-08 17:35:06.683 MyApp[2596:4e07] delegate=<CustomButton: 0x3cdaff0; baseClass = UIButton; frame = (9 212; 255 55); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x3cdf520>> 

de acuerdo con la documentation, CALayer debe tener una propiedad CornerRadius. Estoy usando iPhone SDK 3.1 e incluso agregué un #ifdef para confirmar esto.

¿Puede alguien mostrarme dónde he pasado por alto lo obvio?

Gracias

Respuesta

48

Asegúrese de que

#import <QuartzCore/QuartzCore.h>
en su encabezado o archivo de implementación.

+0

Si se refiere a "import 'CustomButton.h', lo hice al comienzo del archivo .m. – tba

+1

uf. No, lo siento, el formato enredaban las cosas. #import

+0

¡Gracias! Eso funcionó – tba

2

Prueba de esto,

#import <QuartzCore/QuartzCore.h> 

    Button.layer.cornerRadius = 15.0; 
    [Button.layer setMasksToBounds:YES]; 
+0

Esta pregunta fue respondida correctamente hace años, tu respuesta no agrega nada – jrturton

+1

Tu pregunta resolvió mi problema, pero mi problema no era t su pregunta. Todavía está votando por su contribución. :) –