iOS 7和iOS 8中SpriteNode背景图的区别

3

我在iOS(Objective-C,不是Swift)上遇到了这个问题。我从images.xcassets加载了一张背景图片,在iOS 8上可以正常显示,但在iOS 7上却无法正常显示。有人之前遇到过这个问题吗?

这是我使用的代码:

    SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"xxx"];
    background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    [self addChild:background];

布局也有所不同(我没有使用xibs),但第一步是解决背景问题 :)。

以下是iOS 7和iOS 8的屏幕截图。 enter image description here enter image description here

这是一个带有images.xcassets的屏幕截图:

enter image description here谢谢,祝您愉快,Alex。


你能详细解释一下图片为什么没有正确显示吗? - ZeMoon
在images.xcassets中,我有iPhone @2x、960x640的图片,在iOS8中一切似乎都正常,但在iOS7中,该图片变大了。 - alexsc
谢谢您的回答,我已经更新了截图,在images.xcassets中正确添加了launchImages。 - alexsc
你的图片没有覆盖整个屏幕...或者背景图片是像截图中那样的(之前有其他的吗)?无论如何...我说的是启动图片,而不是背景图片。 - TonyMkenu
那个问题来自于launchImages,我的图片就像屏幕截图中的那样。顺便说一句,我也测试过场景的scaleMode为SKSceneScaleModeAspectFit——同样的行为。 - alexsc
显示剩余5条评论
1个回答

0

看起来 iOS 7 不认识你的应用程序是在横向模式下启动,因此框架使用纵向尺寸进行初始化。我用以下方法解决了这个问题:

- (CGSize)screenSize {
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    if ((NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
        return CGSizeMake(screenSize.height, screenSize.width);
    }
    return screenSize;
}

如果你想了解更多关于iOS 8的'方向依赖性',可以进行搜索。希望这对你也有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接