#define на основе платформы [iPhone или iPad]
Я пытаюсь сделать приложение для iPhone совместимым с iPad. В заголовочном файле я установил некоторые константы. Из-за большого экрана я хочу, чтобы некоторые константы, используемые для изображений, были больше на iPad, чем на iPhone. Я нашел несколько предложений в интернете для достижения этой цели:
#if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define imgAmcWidth 656.0f
#define imgAmcHeight 36.0f
#else
#define imgAmcWidth 240.0f
#define imgAmcHeight 20.0f
#endif
Кажется, это удовлетворяет мои потребности. К сожалению, xcode 4 не может скомпилировать это, что выдает ошибку: "Токен"["недопустим в препроцессоре.." [LLVM GCC 4.2]. Что я делаю неправильно?
2 ответа
Хотя, возможно, это не самое элегантное решение, но для предотвращения переписывания кода я решил использовать следующий прием:
#define iPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
#define imgAmcWidth (iPad ? 639.0f : 240.0f)
// etc..
UI_USER_INTERFACE_IDIOM
а также UIUserInterfaceIdiomPad
не препроцессорные вещи. Они являются частью iOS, поэтому вы должны сделать:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
<define your constants here>
} else {
<define your constants here>
}
Смотрите также это, если вы планируете поддерживать версии iOS, предшествующие 3.2