【发布时间】:2012-07-17 10:51:29
【问题描述】:
我已经实现了这段代码来定义我的常量:
#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.0f 和 460.0f。
更新: 由于 k3a 用户发现 UI_USER_INTERFACE_IDIOM 不适用于 iOS 8.3,因为它不再是定义它是静态内联。
也检查这个答案: link
【问题讨论】:
-
#ifdef UI_USER_INTERFACE_IDIOM 在 Xcode 6.3+ 中被破坏,因为它不再是预处理器定义
-
@k3a 哦,真的吗?我还没查过
-
是的。我注意到它是因为我的应用程序在使用 Xcode 6.3+ 编译时加载了 iPhone 笔尖。这是该符号的新定义: static inline UIUserInterfaceIdiom UI_USER_INTERFACE_IDIOM() { return ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone); }
-
@k3a 是的,我认为我们可以使用的解决方案 [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
-
是的,但是原始代码部分“#ifdef UI_USER_INTERFACE_IDIOM”现在不起作用,因为 UI_USER_INTERFACE_IDIOM 不是定义而是函数;)提到它,所以人们知道...
标签: ios objective-c c-preprocessor preprocessor-directive