2012-09-04 11 views
14

Gibt es eine Möglichkeit, diese Art von Sache zu tun?CGSizeMake funktioniert nicht für Konstante

static const CGSize maxPageSize = CGSizeMake(460, 651); 

Dies ist illegal, da "Initializer-Element keine Kompilierzeitkonstante ist."

Ich könnte natürlich einzelne Schwimmer verwenden, aber ich frage mich, ob es einen Weg gibt, dies zu tun.

Antwort

43

Da CGSize ist nur eine einfache C-Struktur:

struct CGSize { 
    CGFloat width; 
    CGFloat height; 
}; 
typedef struct CGSize CGSize; 

Sie können eine Initialisiererliste verwenden:

static const CGSize maxPageSize = {460, 651}; 
+0

konnte also nicht ich, dass statt 'CGSizeMake' überall benutzen? –

+2

@Yar, ja du könntest. Das Argument dagegen ist, dass es brechen wird, wenn Apple das interne Layout der Struktur ändert. –

+0

Danke, froh, dass ich auch das letzte bisschen gefragt habe. –

1
CGSize 

eine Struktur, die Werte Breite und Höhe enthält.

struct CGSize { 
    CGFloat width; 
    CGFloat height; 
}; 
typedef struct CGSize CGSize; 

Felder Breite A Breitenwert. Höhe Ein Höhenwert.

const CGSize CGSizeZero; 

beispiels

static const CGSize pageSize = {320, 480}; 
Verwandte Themen