为什么我在不同的项目中得到两个不同的屏幕尺寸 (Swift)?
Why am I getting two different screen dimensions in different projects (Swift)?
我刚刚在学习 Swift 时完成了我的第一个应用程序的粗略草稿。所以我决定重新制作应用程序,以便我的代码符合 cleaner/more 等
我不使用故事板,
我从 GameViewControler 启动,
两个应用都设置为最低 iOS 13.5,
两者都在 iPhoneX 模拟器上 运行...以及我的 iPhoneX 本身。
但出于某种原因,在每个不同的应用程序中,我得到不同的屏幕尺寸!我假设我在“创建”新项目时做了一些不同的事情,但我无法区分那是什么。
这是我的整个 GameViewController.swift 文件,其中包含一张不同屏幕尺寸的照片。我在获得边界和本机边界后立即中断。
Two different screen sizes
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
}
}
看来与我的旧项目不同,我的新项目中没有 Launch Screen.storyboard。由于我刚开始学习这门语言,我不记得之前是手动添加的,还是 Xcode11 自动包含的。我现在在 Xcode 12.x
据我了解,问题的要点是没有启动屏幕情节提要,屏幕尺寸设置为较小的尺寸。
有人给了我下面的 link,其中解释了发生的事情和原因。
看完上面 link 提供的答案后,我还看到了下面的网页,对我也有帮助。
我刚刚在学习 Swift 时完成了我的第一个应用程序的粗略草稿。所以我决定重新制作应用程序,以便我的代码符合 cleaner/more 等
我不使用故事板, 我从 GameViewControler 启动, 两个应用都设置为最低 iOS 13.5, 两者都在 iPhoneX 模拟器上 运行...以及我的 iPhoneX 本身。
但出于某种原因,在每个不同的应用程序中,我得到不同的屏幕尺寸!我假设我在“创建”新项目时做了一些不同的事情,但我无法区分那是什么。
这是我的整个 GameViewController.swift 文件,其中包含一张不同屏幕尺寸的照片。我在获得边界和本机边界后立即中断。
Two different screen sizes
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
}
}
看来与我的旧项目不同,我的新项目中没有 Launch Screen.storyboard。由于我刚开始学习这门语言,我不记得之前是手动添加的,还是 Xcode11 自动包含的。我现在在 Xcode 12.x
据我了解,问题的要点是没有启动屏幕情节提要,屏幕尺寸设置为较小的尺寸。
有人给了我下面的 link,其中解释了发生的事情和原因。
看完上面 link 提供的答案后,我还看到了下面的网页,对我也有帮助。