2012-07-18 94 views
2

我已经实现了这个代码来定义我的常数:Objective-C的预处理指令发出

#ifdef UI_USER_INTERFACE_IDIOM 
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) 
#else 
#define IS_IPAD() (false) 
#endif 

#if (IS_IPAD) 
CGFloat const scrollSizeWidth = 768.0f; 
CGFloat const scrollSizeHeight = 1004.0f; 
#else 
CGFloat const scrollSizeWidth = 320.0f; 
CGFloat const scrollSizeHeight = 460.0f; 
#endif 

但它总是显示我的变量320.0f460.0f

UPDATE: 作为K3A用户发现UI_USER_INTERFACE_IDIOM并不适用于iOS 8.3工作,因为它不是不再是一个定义它是一个静态的内联。

检查这个答案还有: link

+0

#ifdef UI_USER_INTERFACE_IDIOM在Xcode 6.3+中被破坏,因为它不再是预处理器定义 – k3a 2015-04-26 14:44:50

+0

@ k3a哦,shooot,真的吗?我还没有检查过它 – 2015-04-26 16:22:38

+0

是的。我注意到它是因为我的应用程序在使用Xcode 6.3+编译时加载了iPhone笔尖。下面是符号的新定义:静态内嵌UIUserInterfaceIdiom UI_USER_INTERFACE_IDIOM(){ 返回([[的UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] [[的UIDevice currentDevice] userInterfaceIdiom]: UIUserInterfaceIdiomPhone); } – k3a 2015-04-26 16:59:31

回答

3

变化:

#ifdef UI_USER_INTERFACE_IDIOM 
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) 
#else 
#define IS_IPAD() (false) 
#endif 

#ifdef UI_USER_INTERFACE_IDIOM 
#define IS_IPAD (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) 
#else 
#define IS_IPAD (false) 
#endif 
+0

噢,我明白了,非常感谢你! – 2012-07-18 12:09:51

+0

对不起它的工作,但现在我只得到768.0f 1004.0f;我的意思是在任何时候 – 2012-07-19 15:13:45

2

如果UIUserInterfaceIdiomPad不是一个预处理符号,那么就不能在预处理使用条件句。