嗨,我正试图运行我的非常旧的代码(2011年)到新的Xcode12。我可以运行它,但我的偏移量弄乱了UI。我的SCALEX, SCALEY, OFFSETX, OFFSETY弄得一团糟,因为可用的时间设备只有iPhone4s和标准iPad。如何改变那些支持所有设备的今天。这是我原来的常量。
//规模
#define SW ([[CCDirector sharedDirector] winSize].width)
#define SH ([[CCDirector sharedDirector] winSize].height)
#define SCALEX (1600.0f / 3.0f) / 800.0f
#define SCALEY 320.0f / 480.0f
#define OFFSETX ((1600.0f / 3.0f) - 480.0f) / 2
#define OFFSETY (320.0f - 320.0f) / 2
我不太确定SCALEX
和OFFSETX
是如何计算的,但似乎480.0f和320.0f
可以用
#define DEVICE_HEIGHT [[[[UIApplication sharedApplication] keyWindow] rootViewController].view convertRect:[[UIScreen mainScreen] bounds] fromView:nil].size.height
和
#define DEVICE_WIDTH [[[[UIApplication sharedApplication] keyWindow] rootViewController].view convertRect:[[UIScreen mainScreen] bounds] fromView:nil].size.width
最终表达式为
#define SCALEX (1600.0f / 3.0f) / 800.0f
#define SCALEY DEVICE_WIDTH / DEVICE_HEIGHT
#define OFFSETX ((1600.0f / 3.0f) - DEVICE_HEIGHT) / 2
#define OFFSETY (DEVICE_WIDTH - DEVICE_WIDTH) / 2
请让我知道它是否产生更好的结果,如果我们能知道1600和800的值,我们可以改进解决方案。