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 中填满屏幕的主要内容,如果未能解决你的问题,请参考以下文章
带有 Tableview 图形的 iPad 2 模拟器上的问题仅影响非视网膜显示