¿UIButton.layer.cornerRadius no existe?

Resuelto tba asked hace 15 años • 2 respuestas

Estoy implementando un UIButton personalizado con una funcionalidad mínima. El archivo .h:

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

Me encuentro con un error de compilación en la línea (A) del 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 la línea (A), obtengo el siguiente resultado:

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

Según la documentación , CALayer debería tener una propiedad cornerRadius. Estoy usando iPhone SDK 3.1 e incluso agregué un #ifdef para confirmar esto.

¿Alguien puede mostrarme dónde he pasado por alto lo obvio?

Gracias

tba avatar Oct 09 '09 07:10 tba
Aceptado

Asegúrese

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

Ben Gottlieb avatar Oct 09 '2009 01:10 Ben Gottlieb

Prueba esto,

 #import <QuartzCore/QuartzCore.h>

    Button.layer.cornerRadius = 15.0;
    [Button.layer setMasksToBounds:YES];
Vineesh TP avatar Jan 05 '2014 06:01 Vineesh TP