SpriteKit屏幕尺寸 - 如何在真实手机上获得正确的图像尺寸



为什么当我在真实手机上运行我的应用程序时,它看起来与模拟器不同?

我正在使用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;

最新更新