Artikel Tagged 'CGRectMake "

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 ...

10 nützliche Snippets Objective-C

Bewegen Sie den Doppel-Tap auf dem Simulator

Der Simulator iPhones / iPad Xcode können Sie die Doppel-tippen Sie auf die Alt-Taste gedrückt zu simulieren. Dies ist nützlich, um die Funktion von Pinch, dass zu vergrößern oder zu blättern fernhalten Inhalt in die Ansicht mit Objekten oder simulieren UIWebView . Nun, einige von euch bemerkt, dass die Simulation der "zwei Finger" geht in symmetrischer Weise immer von der Mitte des Bildschirms. So verschieben Sie diese "Mitte" ist auch nur bei gedrückter SHIFT-Taste.

Fortsetzung ...

UIImage: nützliche Snippets

, sono molto utilizzati nello sviluppo di applicazioni per Apple iPhone. Das Objekt der UIImage , zusammen mit UIImageView , sind weit verbreitet in der Entwicklung von Anwendungen für Apple iPhone verwendet. Hier finden Sie einige nützliche Code-Schnipsel aber auch eine Reihe von gemeinsamen Verarbeitung:

Die Kombination von zwei (oder mehr) Bilder

1
2
3
4
5
6
7
8
9
10
11
12
UIImage * ) combineImage : ( UIImage * ) imageA imageB : ( UIImage * ) imageB { - (UIImage *) combineImage: (UIImage *) Imageo imageB: (UIImage *) {imageB
; UIGraphicsBeginImageContext (imageA.size);

CGRectMake ( 0 , 0 , imageA.size.width, imageA.size.height ) ] ; [Imageo drawInRect: CGRectMake (0, 0, imageA.size.width, imageA.size.height)];
CGRectMake ( 0 , 0 , imageB.size.width, imageB.size.height ) ] ; [ImageB drawInRect: CGRectMake (0, 0, imageB.size.width, imageB.size.height)];

UIGraphicsGetImageFromCurrentImageContext ( ) ; UIImage * combinatedImage UIGraphicsGetImageFromCurrentImageContext = ();

UIGraphicsEndImageContext ();

combinatedImage return;
}

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 ...

Objective-C: eine Alternative zur Verwendung CGRectMake

CGRectMake() ist eine Funktion (eigentlich ein Inline # define) verwendet eine Menge vor allem, wenn Sie Grafik-Objekte aus dem Code oder Benutzeroberfläche zu erstellen. o UIImageView . CGRectMake() restituisce una struct (struttura di tipo) CGRect : Seine Verwendung ist daher oft die Initialisierung Komponenten verbunden UIKit , sondern auch auf einfache UIView oder UIImageView . CGRectMake() gibt ein struct (Struktur-Typ) CGRect :

1
2
3
4
5
struct {CGRect
CGPoint Ursprungs;
CGSize Größe;
};
typedef struct CGRect CGRect;

: Die wiederum aus zwei verschiedenen struct zusammen CGPoint und CGSize :

1
2
3
4
5
6
7
8
9
10
11
12
13
struct {CGPoint
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;

/ * Größen. * /

struct {CGSize
CGFloat Breite;
CGFloat Höhe;
};
typedef struct CGSize CGSize;

. Das wiederum, wieder enthalten Typen CGFloat oder Typ float . Wenn wir analysieren den Code von CGRectMake () sind:

1
2
3
4
5
6
7
8
CG_INLINE CGRect
CGRectMake (CGFloat x, y CGFloat, CGFloat Breite, Höhe CGFloat)
{
CGRect rect;
y; rect.origin.x = x, y = rect.origin.y;
height; rect.size.width = width, height = rect.size.height;
Rückkehr rect;
}

Daraus folgt, dass dieses Stück Code:

1
2
3
4
[ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect];
12 , 409 , 100 , 40 ) ; gbutton.frame = CGRectMake (12, 409, 100, 40);
@ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Presse" Forst: UIControlStateNormal];
gbutton ] ; [MainWindow addSubview: gbutton];

Es könnte zu Recht geschrieben werden als:

1
2
3
4
[ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect];
CGRect ) { 12 , 409 , 100 , 40 } ; gbutton.frame = (CGRect) {12, 409, 100, 40};
@ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Presse" Forst: UIControlStateNormal];
gbutton ] ; [MainWindow addSubview: gbutton];

Nur um die Dinge zu beschleunigen "der Code ausgeführt wird ... :)

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 ...