首页 > 解决方案 > 首次调用 presentScene 时不遵守 SKScene scaleMode

问题描述

我在 SpriteKit 中以编程方式创建 SKView 和 SKScene:

        CGRect rect;
        rect.origin.x = 0;
        rect.origin.y = 0;
        rect.size.width = 100;
        rect.size.height = 200;

        SKView* view = [[SKView alloc] initWithFrame:rect];

        view.showsFPS = true;
        view.showsNodeCount = true;
        view.showsDrawCount = true;

        CGSize size;
        size.width = 100;
        size.height = 100;
        SKScene* scene = [[SKScene alloc] initWithSize:size];

        scene.scaleMode = SKSceneScaleModeAspectFit;
        [view presentScene:scene];

第一次显示视图时,我得到了一个不正确缩放的场景:

在此处输入图像描述

但是,如果我稍微调整或移动视图,它会正确缩放:

在此处输入图像描述

我究竟做错了什么?

编辑:这只发生在 MaxOS(SKView 继承自 NSView)上,而不发生在 iOS 上(SKView 继承自 UIView)。

标签: macossprite-kit

解决方案


我发现还有另一个 MacOS 特定的窗口大小调整正在进行,它没有将调整大小的通知发送到视图。这是我正在使用的框架(JUCE)中的问题,而不是 SpriteKit 中的问题。


推荐阅读