为什么当我在真实手机上运行我的应用程序时,它看起来与模拟器不同?
我正在使用spritekit制作游戏。 当我在iPhone 5模拟器中测试它时,屏幕的大小和图像的大小与我想要的完全一样,但是当我在实际的iPhone 5上运行该程序时,图像显示太大,屏幕顶部和底部的部分被切断, 屏幕的左右并没有一直延伸到手机的两侧 - 屏幕上从左到右都有信箱效果。
我所有的图像都以@2x命名,因此它们应该可以与视网膜屏幕一起使用。 以下是我在初始化 SKScene 时使用的与屏幕尺寸相关的代码:
GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];
scene.size = self.view.frame.size;
scene.scaleMode = SKSceneScaleModeAspectFill;
我已经尝试了每种可用的SKSceneScaleModes,但没有一个帮助 - 它们每个都给出了看起来不正确的不同结果。 我使用AspectFill只是因为该模式在模拟器中可以正常工作。
我也尝试过像这样调整屏幕大小,就像要尝试的东西一样,但这也没有帮助:
GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];
CGRect screenRect = [[UIScreen mainScreen] bounds];
scene.size = screenRect.size;
提前谢谢。
这确实是由于模拟器正在模拟ios 8,而我的设备在ios 7上。 当您进入横向模式(我的游戏的本机模式)时,iOS 8 会自动更改坐标系,而 iOS 7 不会。 一旦我想通了,修复就很简单了 - 只需检测设备正在运行的操作系统,如果它低于iOS 8,请交换屏幕的高度和宽度尺寸:
if (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) {
CGSize fixedSize = CGSizeMake(screenRect.size.height, screenRect.size.width);
scene.size = fixedSize;
}
else
scene.size = self.view.frame.size;