iPhone: extender una clase UIView

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
/ /
/ / ViewLabel.h
/ /

# Importar <UIKit/UIKit.h>

UIView { @ Interface ViewLabel: UIView {
* UILabel internalLabel;
}

id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine; - (Id) initWithLabelDefine: (CGRect) etiqueta de fotograma: ( NSString *) labelDefine;

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

XHTML PERMISO TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Dejar de SOPA