creato. Quiero mostrar cómo se puede, con facilidad y rapidez extender una clase UIView de una manera que responde a un nuevo método de inicialización contiene códigos adicionales para personalizar el objeto UIView creado. Como algunos de ustedes probablemente saben, Objective-C no es compatible con un solo fabricante como en las lenguas objeto de otros orientados (como Adobe ActionScript y PHP 5). Es posible, de hecho, crear una instancia de una clase invocando manualmente de diferentes fabricantes (casi infinito). . Normalmente se utilizan para crear objetos UIView con el clásico initWithFrame . Pero imagine que desea crear una nueva clase de objetos visuales, desde un UIView , con algunas adiciones, como una etiqueta incorporada. . Básicamente lo que queremos es que nuestro objeto de crear una instancia que genera, así como la UIView , un objeto de tipo UILabel . Por ejemplo podríamos querer llegar al final:
1 | [ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel vl = * [[ViewLabel alloc] initWithLabelDefine: CGRectMake (0, 0, 320, 80) etiquetas: @ "Hola"]; |
: Para ello sólo tiene que crear una nueva clase de tipo UIView ya llamar ViewLabel :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | / / / / ViewLabel.m / / # Import "ViewLabel.h" @ Implementación ViewLabel id ) initWithFrame : ( CGRect ) frame { - (Id) initWithFrame: (CGRect) frame { self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: marco]) { / / Código de inicialización } cambio sí; } / / / / El inicializador de nuevo / / id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine { - (Id) initWithLabelDefine: (CGRect) etiqueta de fotograma: ( NSString *) {labelDefine self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: marco]) { / / Aquí se puede decidir qué hacer, yo por / / Tengo el mismo marco de seguridad en el pasado / / Entrada, pero se restablece el X e Y ; frame.origin.x = 0; ; frame.origin.y = 0; UILabel alloc ] initWithFrame : frame ] ; internalLabel = [[UILabel alloc] initWithFrame: marco]; internalLabel.text = labelDefine; internalLabel ] ; [Self addSubview: internalLabel]; ; [InternalLabel liberación]; } cambio sí; } void ) drawRect : ( CGRect ) rect { - (Void) drawRect: (CGRect) rect { / / Dibujo de código } void ) dealloc { - (Void) {dealloc ; [Super dealloc]; } @ End |
En el momento de la creación de la nueva clase, que podríamos utilizar:
1 | [ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel vl = * [[ViewLabel alloc] initWithLabelDefine: CGRectMake (0, 0, 320, 80) etiquetas: @ "Hola"]; |










No hay comentarios para esta entrada
Deja un comentario