2016-01-21 4 views
0

У меня недавно возникла проблема с этим приложением, с которым я столкнулся, пытаясь сделать универсальную и портретную ориентацию приложения (предыдущая версия была только на iPhone). Теперь приложение откроется в портрете и будет выглядеть правильно, но оно все еще находится в портрете, когда устройство повернуто.SpriteKit GameScene Rotation Bug

App Error

Это в настоящее время весь код у меня есть для поворота устройства (который работает):

override func shouldAutorotate() -> Bool { 
    return true 
} 

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone { 
     return .AllButUpsideDown 
    } else { 
     return .All 
    } 
} 

Однако это только вращает устройство, а не фактическое GameScene, в течение которого моя игра содержатся. Если приложение запускается с рабочего стола с ландшафтом, игра останется в ландшафте.

В целях тестирования я могу завершить работу и перезапустить приложение с рабочего стола симулятора, и игра будет работать отлично до тех пор, пока устройство не будет повернуто.

Как я могу представить GameScene в правильной ориентации?

+0

Вы представляете 'skView' в' viewDidLoad' или 'viewWillLayoutSubviews'? – TonyMkenu

+0

Я использую 'viewDidLoad', я попытался переключить его на' viewWillLayoutSubviews'. Он работал отлично, возможно, через полсекунды, а затем разбился, и я снова вернул его в 'viewDidLoad'. –

ответ

1

Как хорошо сказал Дуг, попробуйте установить размер skView.

В коде вы загрузили бы первую сцену из gameViewController так. (Это работает, если вы не используете сцену SKS файлов)

let skView = view as! SKView! 
    let scene = StartScene(size: skView.bounds.size) 

    skView.ignoresSiblingOrder = true 
    scene.scaleMode = .AspectFill 

    skView.presentScene(scene) 

Кроме того, его кажется очень плохая идея, чтобы сделать игру работать в портретном и ландшафтном, это вызовет у вас так много проблем, я бы даже не пытаться ,

+0

Мне было бы хорошо, если бы он работал только в ландшафте, за исключением того, что я не мог его загрузить, поскольку он сказал, что iPad должен поддерживать все ориентации? –

+1

Вы изменили ориентацию на цели? Вам также нужно перейти в ваш info.Plist, и там последний вариант поддерживает ориентации для iPad. Удалите 2 портретные или альбомные записи, они не будут удаляться автоматически, если вы измените ориентацию в «Цели». – crashoverride777

+0

Вот и все! Другая запись 'info.Plist', которую мне нужно было добавить, была' UIRequiresFullScreen' как 'Bool' и установить ее в' YES'. –

2

Вы должны убедиться, что ваш SKView который держит ваш SKScene установлен в соответствии с границей это фрейм. Вы можете сделать это с помощью Autolayout либо в InterfaceBuilder, либо через код.

Смежные вопросы