Artikel Tagged 'initWithFrame "

Objective-C: Nachtrag zu den Notifizierungen und Delegierte

Antwort auf die Frage, ILeW mit einem Artikel über das, was der real, Befestigung wie beispielsweise Mitteilungen und Delegierte arbeiten. Mit einem Muster, das wir zuerst sehen, wie der Delegierte Muster:

Delegate

Ein Objekt, auf der Suche nach einem Delegierten

Fortsetzung ...

Passen Sie die Abschnitte in einem UITableView gruppiert

potremmo aver necessità di personalizzare la grafica dei titoli delle sezioni, come California o New York dell'esempio qui sotto. Wenn wir einen Einsatz UITableView Stil Grouped wir brauchen, um das Layout der Abschnittsüberschriften, wie Kalifornien oder New York das Beispiel unten anpassen kann.

UITableView

Dazu nutzen Sie bitte den folgenden Code, womit es in der Delegierte, also in die Klasse, die das Protokoll reagiert UITableViewDelegate :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/ / Gibt anzeigen meiner Gewohnheit, in diesem Fall ein Objekt
/ / Typ UILabel
UIView * ) tableView : ( UITableView * ) tableView - (UIView *) tableView: (UITableView *) tableView
NSInteger ) section { viewForHeaderInSection: (NSInteger) section {

[ [ [ UILabel alloc ] initWithFrame : CGRectZero ] autorelease ] ; UILabel * label = [[[UILabel alloc] initWithFrame: CGRectZero] autorelease];
UIFont boldSystemFontOfSize : 20 ] ; label.font = [UIFont boldSystemFontOfSize: 20];
label.textAlignment = UITextAlignmentCenter;
UIColor blackColor ] ; label.shadowColor = [UIColor blackColor];
1 , 1 ) ; label.shadowOffset CGSizeMake = (1, 1);
"Sezione" ; // Sostituire con un array come al solito Label.Text @ = "Section", / / mit einem Array as usual Ersetzen
UIColor whiteColor ] ; label.textColor = [UIColor whiteColor];
UIColor clearColor ] ; label.backgroundColor = [UIColor clearColor];
; label.opaque = NO;

Rückholaufkleber;
}
/ / Wir müssen auch diese Meldung nicht anderweitig Arbeit
CGFloat ) tableView : ( UITableView * ) tableView - (CGFloat) tableView: (UITableView *) tableView
NSInteger ) section { heightForHeaderInSection: (NSInteger) section {
; Rückkehr 44;
}

Es ist auch wichtig, um auch heightForHeaderInSection , wird nicht funktionieren.

Hinweise von Interesse

o UIImageView , ho utilizzato per inizializzare il frame CGRectZero che corrisponde a CGRectMake(0,0,0,0) . In der Gestaltung unserer UILabel , die auch vielleicht wollen ein komplexes Objekt wie ein UIView oder UIImageView , habe ich die initialize frame CGRectZero entsprechend CGRectMake(0,0,0,0) .

Fortsetzung ...

Apple iPhone: Erstellen Sie eine benutzerdefinierte Schaltfläche mit Umschaltfunktion

non funzionano quando un UIButton è impostato in modalità UIButtonTypeCustom ! Die Zustände UIControlStateSelected oder UIControlStateHighlighted nicht funktionieren, wenn ein UIButton -Modus eingestellt ist UIButtonTypeCustom ! Oder besser gesagt, nicht funktionieren (weil für andere Arten von Button vorbehalten), zum Beispiel zu einer Zwei-Staaten-Schaltfläche zu erstellen: toggle beachten. Wenn wir zwei Bilder (und stato1.png stato2.png) für unsere Button erstellt haben, können wir wie folgt vorgehen:

1
2
3
/ / Die Header-Dateien, dass wir eine globale Variable für usaremo erstellen
/ / Check der Toggle wurden
ToggleFlag BOOL;

Nun erstellen wir unseren Button:

1
2
3
4
5
6
7
8
9
/ / Wir schaffen eine Taste und legen wir es zunächst in den Zustand "stato1.png"
/ / Edit initWithFrame: (CGRect) {} 100,100,50,50 mit dem Standort und
/ / Größe des Bildes hat
; toggleFlag = YES;
[ [ UIButton buttonWithType : UIButtonTypeCustom ] initWithFrame : ( CGRect ) { 100 , 100 , 50 , 50 } ] ; UIButton ToggleButton * = [[UIButton buttonWithType: UIButtonTypeCustom] initWithFrame: (CGRect) {100, 100, 50, 50}];
@ "" forState : UIControlStateNormal ] ; [ToggleButton setTitle: @ "," Forst: UIControlStateNormal];
[ UIImage imageNamed : @ "stato1.png" ] forState : UIControlStateNormal ] ; [ToggleButton SetBackgroundImage: [UIImage imageNamed: @ "stato1.png"] Forst: UIControlStateNormal];
self action : @selector ( onToggle : ) forControlEvents : UIControlEventTouchUpInside ] ; [ToggleButton addTarget: self Aktion: @ selector (onToggle:) forControlEvents: UIControlEventTouchUpInside];
toggleButton ] ; [Self.view addSubview: ToggleButton];

Wenn Sie auf den Button klicken, wird eine Nachricht zu verwaltenden senden onToggle :

1
2
3
4
5
6
7
void ) onToggle : ( id ) sender { - (Void) onToggle: (id) sender {
/ / Hole Zeiger auf UIButton
( UIButton * ) sender; UIButton ButtonClicked * = (UIButton *) sender;
/ / Ausführen Toogle
toggleFlag = toggleFlag!;
[ UIImage imageNamed : ( toggleFlag ) ? @ "stato1.png" : @ "stato2.png" ] forState : UIControlStateNormal ] ; [ButtonClicked SetBackgroundImage: [UIImage imageNamed: (toggleFlag) @ "Stato1.png" @ "stato2.png"] Forst:? UIControlStateNormal];
}

Fortsetzung ...

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"];

Fortsetzung ...

Apple iPhone 3.0 SDK: Korrektur eines Fehlers auf UIButton buttonWithType

Wie im Beitrag angegeben Apple iPhone SDK 3.0: Erste Inkompatibilität des Apple SDK 3.0 zeigen unterschiedliche Verhaltensweisen in Bezug auf 2.2.1 Release. Support-Service für Entwickler gab mir die Antwort, und dann die Lösung des Problems. . Die Antwort war, dass die technische Unterstützung [UIButton buttonWithType:] bereits genannt - im Inneren - die initWithFrame . Daraus folgt, dass nach der technischen Unterstützung, schreiben:

Fortsetzung ...

Apple iPhone 3.0 SDK: Zuerst Inkompatibilität

Nach der Installation des 3.0 SDK für Apple iPhone, offenbar noch nicht vollkommen stabil, habe ich sofort gefunden einige Probleme, sowohl bei der Erstellung des Codes ist in der allgemeinen XCode. Die wichtigsten - die ich prompt mit einem "Zuhause" an Apple gemeldet, Entwickler in der Mitte - die Einrichtung von Schaltflächen über den Code. Hier ist ein Auszug des Codes ist nicht kompatibel mit dem SDK 3.0:

1
2
3
4
[ [ UIButton buttonWithType : UIButtonTypeRoundedRect ] initWithFrame : CGRectMake ( 0 , 0 , 100 , 40 ) ] ; UIButton * myButton = [[UIButton buttonWithType: UIButtonTypeRoundedRect] initWithFrame: CGRectMake (0, 0, 100, 40)];
@ "Bottone" forState : UIControlStateNormal ] ; [MyButton setTitle: @ "Button" Forst: UIControlStateNormal];
/ / Andere Einstellungen
myButton ] ; [Self.view addSubview: myButton];

Durch das Ausfüllen dieses Codes mit dem SDK 2.2.1 erhalten Sie ein klassisches Button mit der Beschriftung "Button". Mit dem SDK 3.0, ist die Schaltfläche erstellt, aber das Label verschwindet. la situazione sembra migliorare, nel senso che la label viene resa apparentemente in modo corretto. Verwendung als buttonWithType Typ UIButtonTypeCustom scheint die Situation in dem Sinne, dass das Etikett ist offenbar richtig gemacht zu verbessern. Es ist immer noch seltsam, den plötzlichen Ausfall des Typs UIButtonTypeRoundedRect . Ich warte noch immer auf eine Antwort von Apple ... Ich habe gerade Neuheit; Platz!

Fortsetzung ...