我想为我的应用定义一些参数,这些参数适用于iPhone和iPad。我想定义使用宏而不是在运行时判断它们。应该是这样的:
#if TARGET_IPHONE_SIMULATOR
#define SCROLL_SIZE_PORTRAIT CGSizeMake(768, 1024)
#define SCROLL_SIZE_LANDSCAPE CGSizeMake(1024, 768)
#else
#define SCROLL_SIZE_PORTRAIT CGSizeMake(320, 460)
#define SCROLL_SIZE_LANDSCAPE CGSizeMake(460, 320)
#endif
然而,这个宏无法区分iPhone和iPad。 还有其他办法吗? 感谢。
答案 0 :(得分:1)
使用功能:
static inline CGSize scrollSizePortrait()
{
return [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad ? CGSizeMake(768, 1024) : CGSizeMake(320, 460);
}
static inline CGSize scrollSizeLandscape()
{
return [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad ? CGSizeMake(1024, 768) : CGSizeMake(460, 320);
}
答案 1 :(得分:0)
如果你想创建一个通用的应用程序,这绝对不是正确的方法,因为编译器不知道该应用程序将在哪个设备上运行。
因此,即使您使用宏,也必须在运行时评估 。
您必须在运行时检查设备,因为这是通用应用程序实际知道(根据定义)它是否在iPhone或iPad上执行的唯一时间。