title: SKView presentScene fails with transition
body: <p>I'm having what appears to be a problem similar to the one posted here: <a href="https://stackoverflow.com/questions/35713804/in-spritekit-presentscene-transition-wont-work-however-presentscene-does">In SpriteKit presentScene Transition, won&#39;t work. However, presentScene does</a>, however the source of the problem (switching from one VC to another) doesn't seem to apply.</p>
  
  <p>Here's the relevant code from my GameViewController, which splits the screen between two views: a UIView "HUD" -occupying the top eighth of the screen- and an SKView "gamePlayView", occupying the remaining space. The controller will first present a MenuScene in gamePlayView (this works fine), which will have buttons with options to either play the game or go to the settings (will possible future options to be added). So far I've just got the start button, which uses a delegate to call the "startNewRound" function of GameViewController.</p>
  
  <p>The plan is for GameViewController to keep a reference to a MenuScene, a DiatonicIntervalScene (the game), and -in future- a SettingsScene, which it will swap in and out of the gamePlayView. All of these are type GameScene, which inherits from SKScene, and does nothing else except prove a reference to GameViewController and some colour values.</p>
  
  <pre><code>// Views
  var hud: HUD!
  var gamePlayView: SKView!
  
  // Scenes
  var menuScene: GameScene!
  var gamePlayScene: (GameScene &amp; TurnScene)!
  
  override func viewDidLoad() {
  
      // There's some code here to determine the respective sizes of 
      // the areas and to create and add them
  
      self.view.addSubview(hud)
      self.view.addSubview(gamePlayView)
  
      menuScene = MenuScene(size: gamePlayView.frame.size)
      menuScene.gameController = self
  
      gamePlayScene = DiatonicIntervalScene(size: gamePlayView.frame.size)
      gamePlayScene.gameController = self
  
      gamePlayView.presentScene(menuScene)
  }
  
  func startNewRound() {
  
      print("BEFORE: gamePlayView.scene.name = \( gamePlayView.scene!.name!)\n")
  
      loadNewTurn()
  
      let reveal = SKTransition.reveal(with: .down,
                                       duration: 1)
      gamePlayView.presentScene(gamePlayScene)
      // gamePlayView.presentScene(gamePlayScene, transition: reveal)
  
      print("AFTER: gamePlayView.scene.name = \(gamePlayView.scene!.name!)")
  }
  </code></pre>
  
  <p>The problem I'm running into is that this code works exactly as I want it to, unless I attempt to add a transition to gamePlayView.presentScene (you can see the modified, commented out line in "startNewRound()"). If I use that line instead, the transition never happens, and gamePlayView's scene property is never updated.</p>
  
  <p>With no transition, the print statements in startNewRound() print out: </p>
  
  <pre><code>BEFORE gamePlayView.scene.name = Menu
  AFTER gamePlayView.scene.name = GameScene
  </code></pre>
  
  <p>whereas if I use the presentScene which includes the transition, the output is </p>
  
  <pre><code>BEFORE gamePlayView.scene.name = Menu
  AFTER gamePlayView.scene.name = Menu
  </code></pre>
  
  <p>It's nothing to do with loadNewTurn(), I've tried commenting it out (even I didn't think it would do anything). Strange as well is that gamePlayScene's didMoveTo() gets called, despite the fact that the transition doesn't happen and the scene doesn't appear</p>
  
  <p>That's all I can think of to include, thanks for taking time to look at it and let me know if I'm missing anything!</p>
  
  <p>UPDATE: I've discovered that the scene change and transition go as planned if I replace gamePlayView's previous initiliazer:</p>
  
  <pre><code>gamePlayView = SKView(frame: CGRect(origin: gamePlayAreaOrigin, size: gamePlayAreaSize))
  self.view.addSubview(gamePlayView)
  </code></pre>
  
  <p>with: </p>
  
  <pre><code>gamePlayView = self.view as! SKView
  </code></pre>
  
  <p>making it take up the whole screen, so apparently something about being the view controller's subview instead of it's self.view  makes the transition not work</p>