iPhone: eine Klasse zu erweitern UIView

creato. Ich will zeigen, wie Sie einfach und schnell eine Klasse zu erweitern UIView in einer Weise, dass eine neue Initialisierung Methode reagiert enthält zusätzlichen Code, um das Objekt anpassen UIView erstellt. Wie einige von euch wahrscheinlich wissen, ist Objective-C nicht unterstützen einen Hersteller wie auch in anderen objektorientierten Sprachen (wie z. B. Adobe ActionScript oder PHP 5). Es kann in der Tat, erstellen Sie eine Instanz einer Klasse manuell aufrufen verschiedener Hersteller (fast unendlich). . Normalerweise sind wir verwendet, um Objekte zu erstellen UIView mit dem klassischen initWithFrame . Aber stellen Sie eine neue Klasse von visuellen Objekten, von einem zu schaffen UIView , mit einigen Ergänzungen, wie zB einen integrierten Label. . Im Grunde, was wir wollen, ist, dass unser Objekt instanziieren es schafft sowie die UIView , ein Objekt vom Typ UILabel . Zum Beispiel könnten wir wollen bis zum Ende erhalten:

1
[ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel vl = * [[ViewLabel alloc] initWithLabelDefine: CGRectMake (0, 0, 320, 80) label: @ "Hallo"];

: Dazu erstellen Sie einfach eine neue Klasse von Typ UIView und rufen ViewLabel :

1
2
3
4
5
6
7
8
9
10
11
12
13
/ /
/ / ViewLabel.h
/ /

# Import <UIKit/UIKit.h>

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

id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine; - (Id) initWithLabelDefine: (CGRect) Bildbezeichnung: ( 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"

@ Implementation ViewLabel

id ) initWithFrame : ( CGRect ) frame { - (Id) initWithFrame: (CGRect) frame {

self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: frame]) {
/ / Initialisierung Code
}
Rückkehr Selbst;
}

/ /
/ / Unser neues initializer
/ /
id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine { - (Id) initWithLabelDefine: (CGRect) Bildbezeichnung: ( NSString *) {labelDefine

self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: frame]) {
/ / Hier können Sie entscheiden, was zu tun, ich
/ / Ich habe den gleichen Frame-Sicherheit in der Vergangenheit
/ / Input, aber ich reset der x-und y-
; frame.origin.x = 0;
; frame.origin.y = 0;
UILabel alloc ] initWithFrame : frame ] ; internalLabel = [[UILabel alloc] initWithFrame: frame];
internalLabel.text = labelDefine;
internalLabel ] ; [Self addSubview: internalLabel];
; [InternalLabel release];
}
Rückkehr Selbst;
}

void ) drawRect : ( CGRect ) rect { - (Void) drawRect: (CGRect) rect {
/ / Zeichnen-Code
}

void ) dealloc { - (Void) {dealloc
; [Super dealloc];
}

@ End

Zum Zeitpunkt der Erstellung unserer neuen Klasse, könnten wir:

1
[ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel vl = * [[ViewLabel alloc] initWithLabelDefine: CGRectMake (0, 0, 320, 80) label: @ "Hallo"];

Es gibt keine Kommentare für diesen Beitrag

Hinterlasse einen Kommentar

XHTML TAG PERMIT: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <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