5

定義する必要がありますが、iPad または iPhone を使用する場合、この場合は異なる値が必要です。

だから、私が思うに、それは次のようになるはずです:

#ifdef UI_USER_INTERFACE_IDIOM == iPAD
#define ROWCOUNT 12
#else
#define ROWCOUNT 5
#endif

取得するための解決策はありますか?

4

3 に答える 3

8

UI_USER_INTERFACE_IDIOMコンパイル時ではなく、実行時にハードウェアのタイプをチェックする式に展開されるマクロです。したがって、 の定義をconst やマクロではなく変数に変更する必要があります。ROWCOUNT

NSUInteger rowCount;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    rowCount = 12;
else
    rowCount = 5;

またはより簡潔に:

NSUInteger rowCount = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 12 : 5;
于 2013-08-06T20:32:14.833 に答える
7

#ifdefここであなたが望むことを本当にしません。

良い解決策は次のとおりです。

#define ROWCOUNT ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) ? 5 : 12)
于 2013-08-06T20:34:41.317 に答える