我确信这可能非常容易(或者无法完成),但我似乎找不到任何东西。
在我的一个.h文件中,我需要确定该应用程序是在iPad还是iPhone上运行。然后相应地更改#define的值。
理想情况下,我会这样看起来像这样:
#if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
#define deltaX 10.0
#define theda 15.0
#define threshHold 267.0
#endif
#if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
#define deltaX 78.1
#define theda 67.2
#define threshHold 453.0
#endif
我不知道该使用什么,非常感谢任何帮助。
感谢您的时间!
答案 0 :(得分:14)
派对有点晚了,但我觉得我会分享对我有用的东西。
一直为我工作的解决方案是在某处定义IS_IPAD和IS_IPHONE
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
然后当需要基于ipad / iphone的其他定义时,做这样的事情
#define deltaX (IS_IPAD? 78: 10)
答案 1 :(得分:9)
可悲的是,你不能这样做,因为在通用应用程序中,相同的代码在iPhone上运行,就像在iPad上运行一样,所以这个决定必须在运行时进行,而不是在编译时进行。
您应该在头文件中声明这些变量,然后根据UI_USER_INTERFACE_IDIOM()
的值在运行时设置它们。
答案 2 :(得分:3)
您已经有了确定设备的代码,所以没关系。
我将按以下方式创建您的定义:
#define padDeltaX 10.0
#define phoneDeltaX 78.1
... etc
然后在你的班级档案中:
if (if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
// do iPhone processing with the variables
}
else
{
// must be iPad
}
可替换地:
float variableOne, variableTwo; // etc
if (if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
variableOne = phoneDeltaX;
variableTwo = phoneTheta; // etc
}
else
{
// must be iPad
variableOne = padDeltaX;
variableTwo = padTheta; // etc
}
// now do the shared processing with variableOne, variableTwo etc
希望这有帮助!