2012-09-04 6 views
14

¿Hay alguna manera de hacer este tipo de cosas?CGSizeMake no funciona para Constant

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

Esto es ilegal porque "El elemento inicializador no es una constante en tiempo de compilación".

Podría usar flotadores individuales, por supuesto, pero me pregunto si hay una manera de hacerlo.

Respuesta

43

Desde CGSize es sólo un simple C-struct:

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

Puede utilizar una lista de inicialización:

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

Así que no puedo usar que en lugar de 'CGSizeMake' en todas partes? –

+2

@Yar, sí podrías. El argumento en contra de hacerlo es que se romperá si Apple alguna vez cambia el diseño interno de la estructura. –

+0

Gracias, me alegro de haber preguntado eso último también. –

1
CGSize 

una estructura que contiene los valores de anchura y altura.

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

campos anchura un valor de anchura. altura Un valor de altura.

const CGSize CGSizeZero; 

por ejemplo

static const CGSize pageSize = {320, 480}; 
Cuestiones relacionadas