creato. Je veux montrer comment vous pouvez facilement et rapidement étendre une classe UIView d'une manière qui répond à une nouvelle méthode d'initialisation contient du 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 les langages orientés objet d'autres (comme Adobe ActionScript ou PHP 5). Il peut, en effet, créer une instance d'une classe appelant manuellement différents fabricants (virtuellement infini). . Normalement nous sommes habitués à créer des objets UIView avec le classique initWithFrame . Mais imaginez que vous souhaitez créer une nouvelle classe d'objets visuels, à partir d'un UIView , avec quelques ajouts, comme une étiquette intégrée. . Fondamentalement, ce que nous voulons, c'est que l'instanciation de notre objet qu'il crée, ainsi que les UIView , un objet de type UILabel . Par exemple nous pourrions arriver à 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 appeler 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 oeuvre ViewLabel id ) initWithFrame : ( CGRect ) frame { - (Id) initWithFrame: (CGRect) frame { self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: IMAGE]) { / / Initialisation du code } le retour de soi; } / / / / Notre nouvelle initialiseur / / id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine { - (Id) initWithLabelDefine: étiquette d'image (CGRect): ( NSString *) {labelDefine self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: IMAGE]) { / / Ici vous pouvez décider quoi faire, I pour / / J'ai eu le même cadre de sécurité dans le passé / / Entrée mais je réinitialiser le X et Y ; frame.origin.x = 0; ; frame.origin.y = 0; UILabel alloc ] initWithFrame : frame ] ; internalLabel = [[UILabel alloc] initWithFrame: cadre]; internalLabel.text = labelDefine; internalLabel ] ; [Self addSubview: internalLabel]; ; [InternalLabel release]; } le retour de soi; } void ) drawRect : ( CGRect ) rect { - (Void) drawRect: (CGRect) rect { / / Dessin du code } 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