如果设备是iPad,我正在尝试使用Preprocessor-Ifs进行检查。如果它是iPad,我想定义一些特定于设备的东西,但出于某种原因,如果PP常数为真,我就无法检入PP-IF。
也许你有个主意?
#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD false
#endif
#if IS_IPAD
#define WIDTH 768
#define HEIGHT 1024
#else
#define WIDTH 320
#define HEIGHT 480
#endif
答案 0 :(得分:11)
在构建应用程序之前处理预处理器规则(惊讶,惊讶)。由于它是一个通用的应用程序,它还不知道它是在iPad还是iPhone上运行。
使用此:
#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD false
#endif
#define WIDTH (IS_IPAD ? 768 : 320)
#define HEIGHT (IS_IPAD ? 1024 : 480)
答案 1 :(得分:2)
这是我的方法:你可以在头文件中使用它
#define _IPAD ((__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200) && (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad))
#define GUI_TITLE_LABEL_WIDTH (_IPAD? 220*2 : 220)
#define UI_FONT_SIZE (_IPAD? 20 : 16)
简短易行:D
答案 2 :(得分:0)
您在#if语句中进行了运行时检查。预处理器检查不会评估(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
因此必须在运行时设置宽度和高度,因为直到运行时才能判断它是否是iPad。我还建议您使用0
代替false
。
答案 3 :(得分:0)
(当您在SO上提出问题时,您应该告诉您尝试了什么,以及发生了什么。) 无论如何,我认为你将无法在那里做你想做的事,因为在编译时,编译器不知道你将运行什么设备。您可以编译代码,然后在iPad和iPhone,iPod上运行 - 预处理器怎么可能知道将来运行哪个设备?