为什么我在不同的项目中得到两个不同的屏幕尺寸(Swift)?

为什么我在不同的项目中得到两个不同的屏幕尺寸(Swift)?,swift,uiview,sprite-kit,Swift,Uiview,Sprite Kit,在学习Swift时,我刚刚完成了我的第一个应用程序的一个非常粗略的草稿。所以我决定重新制作这个应用程序,使我的代码更干净/更兼容,等等 我不使用故事板, 我从GameViewController启动, 这两款应用的iOS最低设置为13.5, 两者都在iPhoneX模拟器上运行……我的iPhoneX本身也是如此 但由于某些原因,在每个不同的应用程序中,我得到了不同的屏幕大小!我将假设我在“创建”新项目时做了一些不同的事情,但我无法区分这是什么 这是我的整个GameViewController.sw

在学习Swift时,我刚刚完成了我的第一个应用程序的一个非常粗略的草稿。所以我决定重新制作这个应用程序,使我的代码更干净/更兼容,等等

我不使用故事板, 我从GameViewController启动, 这两款应用的iOS最低设置为13.5, 两者都在iPhoneX模拟器上运行……我的iPhoneX本身也是如此

但由于某些原因,在每个不同的应用程序中,我得到了不同的屏幕大小!我将假设我在“创建”新项目时做了一些不同的事情,但我无法区分这是什么

这是我的整个GameViewController.swift文件,其中包括一张不同屏幕尺寸的照片。我在得到边界和本机边界后立即中断


似乎与我的旧项目不同,我的新项目中没有启动Screen.storyboard。由于我刚刚开始学习这种语言,我不记得以前是手动添加的,还是Xcode 11自动包含的。我现在使用的是Xcode 12.x

据我所知,问题的要点是,如果没有启动屏幕故事板,屏幕大小将设置为更小的尺寸

有人给了我下面的链接,解释了发生的事情和原因

在阅读了上面的链接提供的答案后,我也看到了下面的网页,它也帮助了我

import UIKit
import SpriteKit

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let view = self.view as! SKView? {

            var wPix = UIScreen.main.nativeBounds.width
            var hPix = UIScreen.main.nativeBounds.height
            var wPoi  = UIScreen.main.bounds.width
            var hPoi  = UIScreen.main.bounds.height

            var scene : GameScene!
            DispatchQueue.main.async { [self] in
                     scene = GameScene(size: CGSize(width: wPoi, height: hPoi))


            scene.anchorPoint = CGPoint(x: 0.0, y: 0.0)
            scene.backgroundColor = .red
            scene.scaleMode = .aspectFit
            view.isHidden = false
            view.presentScene(scene)
            }

            view.ignoresSiblingOrder = true
            view.showsFPS = true
            view.showsNodeCount = true
            view.showsPhysics = true
        }
    }

    override var shouldAutorotate: Bool {
        return false
    }

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

    override var prefersStatusBarHidden: Bool {
        return false
    }
}