creato. Je veux montrer comment il est possible, d'une manière simple et rapide, étendre une classe UIView donc qui répond à une nouvelle méthode d'initialisation contenant un code supplémentaire pour personnaliser l'objet UIView créé. Comme certains d'entre vous le savez probablement, Objective-C ne supporte pas un seul fabricant comme dans d'autres langages orientés objet (comme Adobe ActionScript ou PHP5). E 'peut, en effet, de créer une instance d'une classe manuellement en appelant divers fabricants (virtuellement infini). . Normalement, nous sommes habitués à créer des objets UIView avec le classique initWithFrame . Supposons, cependant, veulent créer une nouvelle classe d'objets visuels, à partir d'un UIView , avec quelques ajouts, par exemple une étiquette incorporée. . Fondamentalement, ce que nous voulons, c'est que notre objet instancier ce qui crée, ainsi que le UIView , également un objet de type UILabel . Par exemple, on peut vouloir obtenir à la fin:
1 | [ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel * vl = [[ViewLabel alloc] initWithLabelDefine: CGRectMake (0, 0, 320, 80) Label: @ "Bonjour"]; |
: Pour ce faire il suffit de créer une nouvelle classe de type UIView et appel 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" @ Mise en œuvre ViewLabel id ) initWithFrame : ( CGRect ) frame { - (Id) initWithFrame: (CGRect) frame { self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: IMAGE]) { Code / / Initialisation } retourner soi-même; } / / / / Notre nouvelle initialisation / / id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine { - (Id) initWithLabelDefine: (CGRect) étiquette d'image: ( NSString *) {labelDefine self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: IMAGE]) { / / Ici, vous pouvez décider de la façon de se comporter, I pour / / Sécurité j'ai eu le même cadre dans le passé / / Input mais je réinitialiser le X et Y ; frame.origin.x = 0; ; frame.origin.y = 0; UILabel alloc ] initWithFrame : frame ] ; internalLabel = [[UILabel alloc] initWithFrame: châssis]; internalLabel.text = labelDefine; internalLabel ] ; [Self addSubview: internalLabel]; ; [InternalLabel release]; } retourner soi-même; } void ) drawRect : ( CGRect ) rect { - (Void) drawRect: (CGRect) rect { Code / / Dessin } void ) dealloc { - (Void) dealloc { ; [Super dealloc]; } @ Fin |
Au moment de la création de notre nouvelle classe, nous pourrions utiliser:
1 | [ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel * vl = [[ViewLabel alloc] initWithLabelDefine: CGRectMake (0, 0, 320, 80) Label: @ "Bonjour"]; |










Il n'y a aucun commentaire pour cet article
Laisser un commentaire