как обнаружить iPhone / ipad во время предварительной компиляции - PullRequest
0 голосов
/ 28 февраля 2012

Я бы хотел определить некоторые параметры для моего приложения, которые являются универсальными как для iPhone, так и для iPad. Я хочу определить, используя макрос, а не судить их во время выполнения. Это должно быть как:


#if TARGET_IPHONE_SIMULATOR
#define SCROLL_SIZE_PORTRAIT CGSizeMake(768, 1024)
#define SCROLL_SIZE_LANDSCAPE CGSizeMake(1024, 768)
#else
#define SCROLL_SIZE_PORTRAIT CGSizeMake(320, 460)
#define SCROLL_SIZE_LANDSCAPE CGSizeMake(460, 320)
#endif

Однако этот макрос не может различить iPhone и iPad. Есть ли другой способ сделать это? спасибо.

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Используйте функцию:

static inline CGSize scrollSizePortrait()
{
     return [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad ? CGSizeMake(768, 1024) : CGSizeMake(320, 460);
}

static inline CGSize scrollSizeLandscape()
{
    return [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad ? CGSizeMake(1024, 768) : CGSizeMake(460, 320);
}
0 голосов
/ 28 февраля 2012

Если вы хотите создать универсальное приложение, это определенно не правильный путь, так как компилятор не знает, на каком устройстве приложение будет запущено заранее.

Таким образом, даже если вы используете макрос, его нужно будет оценивать во время выполнения .

Вам придется проверять устройство во время выполнения, поскольку это единственное время, когда универсальное приложение на самом деле знает (по определению), выполняется ли оно на iPhone или iPad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...