#define
- определение препроцессора. Это означает, что это первое, что делается при компиляции. По сути, он просто вставляет определение везде в коде, прежде чем начать компиляцию.
Но так как ваши операторы if выполняются во время выполнения, а не во время компиляции, вам необходимо либо заменить свои операторы if на препроцессор if (#if
, не рекомендуется), либо изменить ширину / высоту, определяемую во время выполнения (настоятельно рекомендуется). Это должно выглядеть так:
int width, height;
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
width = X;
height = Y;
else {
width = A;
height = B;
}
, а затем просто используйте значения ширины и высоты для своей ширины и высоты.
Если вы все еще хотите пометить X, Y, A, B вместо использования #define (константы времени компиляции), используйте константы времени выполнения:
static const int iPhoneWidth = X;
static const int iPhoneHeight = Y;
static const int iPadWidth = A;
static const int iPadHeight = B;
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
width = iPhoneWidth;
height = iPhoneHeight;
else {
width = iPadWidth;
height = iPadHeight;
}