我需要进行定义,但如果我使用iPad或iPhone,我需要在这种情况下使用不同的值.
所以,我认为它应该是这样的:
#ifdef UI_USER_INTERFACE_IDIOM == iPAD
#define ROWCOUNT 12
#else
#define ROWCOUNT 5
#endif
Run Code Online (Sandbox Code Playgroud)
有一些解决方案可以得到它吗?
UI_USER_INTERFACE_IDIOM是一个宏,它扩展为某个表达式,用于在运行时检查硬件类型,而不是在编译时.因此,您可能希望将您的定义更改ROWCOUNT为变量而不是const或宏.
NSUInteger rowCount;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
rowCount = 12;
else
rowCount = 5;
Run Code Online (Sandbox Code Playgroud)
或者更简洁:
NSUInteger rowCount = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 12 : 5;
Run Code Online (Sandbox Code Playgroud)
#ifdef 在这里没有真正做你想做的事.
一个好的解决方案是:
#define ROWCOUNT ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) ? 5 : 12)
Run Code Online (Sandbox Code Playgroud)
此方法可正确识别UI_USER_INTERFACE_IDIOM的可用性:
#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD false
#endif
#define ROWCOUNT (IS_IPAD ? 12: 5)
Run Code Online (Sandbox Code Playgroud)
您也可以使用IS_IPAD宏,如下所示:
NSUInteger rowCount;
if (IS_IPAD){
rowCount = 12;
}else{
rowCount = 5;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6523 次 |
| 最近记录: |