2012-09-04 12 views
14

C'è un modo per fare questo tipo di cose?CGSizeMake non funziona per la costante

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

Questo è illegale perché "l'elemento Initializer non è una costante in fase di compilazione".

Potrei usare i singoli float, ovviamente, ma mi chiedo se c'è un modo per farlo.

risposta

43

Dal CGSize è solo un semplice C-struct:

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

È possibile utilizzare una lista di inizializzazione:

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

Quindi non ho potuto utilizzare che invece di 'CGSizeMake' ovunque? –

+2

@ Sì, si, si. L'argomento contro cui farlo è che si interromperà se Apple cambierà il layout interno della struttura. –

+0

Grazie, felice di aver chiesto anche l'ultimo bit. –

1
CGSize 

una struttura che contiene i valori di larghezza e altezza.

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

Fields larghezza Un valore spessore. altezza Un valore di altezza.

const CGSize CGSizeZero; 

es

static const CGSize pageSize = {320, 480}; 
Problemi correlati