iPad 模拟器上的 SKScene 问题无法在 Xcode 11 beta 7 中填满屏幕

Posted

技术标签:

【中文标题】iPad 模拟器上的 SKScene 问题无法在 Xcode 11 beta 7 中填满屏幕【英文标题】:Issues with SKScene on iPad simulator not filling screen in Xcode 11 beta 7 【发布时间】:2019-09-03 11:59:30 【问题描述】:

在 Xcode 11 beta 7 中,我的 SKScene 出现问题,我的 GameScene 没有填满 iPad 模拟器的整个屏幕。这适用于所有 iPad 模拟器。在我的物理 iPad 上,游戏场景符合预期,但我担心这可能不适用于所有 iPad。在所有 iPhone 模拟器和我的 iPhone 上,游戏场景也会按预期显示。

我有两个SKScenes,一个是填满整个屏幕的主菜单屏幕,但我的游戏场景没有,当我加载游戏场景时它是方形的,主菜单屏幕在下方可见,如下所示:

以下是我的GameViewController 的代码,它实际上与我的MainMenuViewController 相同,除了“Game”的所有实例都是“MainMenu”:

class GameViewController: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        // Load 'GameScene.sks' as a GKScene. This provides gameplay related content
        // including entities and graphs.
        if let scene = GKScene(fileNamed: "GameScene") 

            // Get the SKScene from the loaded GKScene
            if let sceneNode = scene.rootNode as! GameScene? 

                // Copy gameplay related content over to the scene
                sceneNode.entities = scene.entities
                sceneNode.graphs = scene.graphs

                // Set the scale mode to scale to fit the window
                sceneNode.scaleMode = .aspectFill

                // Present the scene
                if let view = self.view as! SKView? 
                    view.presentScene(sceneNode)

                    view.ignoresSiblingOrder = true

                    view.showsFPS = true
                    view.showsNodeCount = true
                
            
        
    

    override var shouldAutorotate: Bool 
        return true
    

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask 
        if UIDevice.current.userInterfaceIdiom == .phone 
            return .allButUpsideDown
         else 
            return .all
        
    

    override var prefersStatusBarHidden: Bool 
        return true
    

我尝试将sceneNode.scaleMode = .aspectFill 行更改为sceneNode.scaleMode = .aspectFit,但这会产生以下结果:

那么,如何让我的游戏场景(红色区域)填满整个 iPad 屏幕?

【问题讨论】:

我猜你很难理解纵横比。 iPad 有 2 种不同的纵横比,139:199 和 3:4。为了能够同时管理这两者,你将不得不接受某些事情将被切断。你的“目标”风格是什么,11" pro 还是普通的 Ipad @Knight0fDragon 我知道宽高比问题,我不关心屏幕上的东西(现在),我只想让整个屏幕充满游戏场景。 您将不得不详细说明问题出在哪里,或者可能提供实际导致问题的代码。您正在向我们展示您的“菜单”代码,您需要向我们展示您的实际游戏代码,以及您如何展示它。 我的第二个猜测是你在 skview 中有一个 skview,这就是为什么你会同时看到你的菜单和场景 @Knight0fDragon 我确实在另一个 SKView 中有一个 SKView。为什么这会是个问题?在 iPhone 模拟器上(是的,所有纵横比)游戏场景覆盖了主菜单。 【参考方案1】:

通常在设置赏金后我会找到答案。

问题出在我的故事板文件中,而不是我的代码中:

最初,我在segue之后的视图属性中有这个:

将其更改为这样会使 SKView 填满整个屏幕:

很明显,Xcode 在某些时候发生了变化,无论出于何种原因,“自动”不再填满屏幕。

编辑:为了更清楚地说明,当您打开情节提要文件时,单击/选择要调整的视图控制器,在属性检查器下,有一个用于演示的选项,您可以在其中选择“全屏”属性。

【讨论】:

以上是关于iPad 模拟器上的 SKScene 问题无法在 Xcode 11 beta 7 中填满屏幕的主要内容,如果未能解决你的问题,请参考以下文章

SKScene iPad 高度宽度反转

带有 Tableview 图形的 iPad 2 模拟器上的问题仅影响非视网膜显示

iPad View 无法正确传输到 iPad

网站在 iOS6 中正常呈现,但在 iOS5 iPad 模拟器中翻倍

没有模拟器的 iPad 上的排毒测试

iPad模拟器上的应用程序崩溃