title: Transition between scenes is slow on first time
body: <p>I tried to move between GameScene to SettingsScene and is works perfect expect first time.
  In first time the game is "stuck" for 1-3 seconds and presented the SettingsScene without the transition, after first time the transition and game works perfect.
  The back (between SettingsScene to GameScene) works good also in first time.</p>
  
  <p>The transition code between GameScene to SettingsScene</p>
  
  <pre><code>   override func touchesBegan(_ touches: Set&lt;UITouch&gt;, with event: UIEvent?) {
  
      for touch: AnyObject in touches {
          self.removeAllActions()
          // Get the location of the touch in this scene
          let location = touch.location(in: self)
          // Check if the location of the touch is within the button's bounds
          //Play Button
          if PlayButton.contains(location) {
              bannerView.isHidden = true
              let newScene = PlayScene(size: (view?.bounds.size)!)
              newScene.scaleMode = .aspectFill
              let reveal = SKTransition.crossFade(withDuration: 1.0)
              self.view?.presentScene(newScene, transition: reveal)
  
              //Settings Button
          }else if SettingsButton.contains(location) {
              bannerView.isHidden = true
              settingsscene?.scaleMode = .resizeFill
              let reveal = SKTransition.push(with: SKTransitionDirection.down, duration: 0.7)
              self.view?.presentScene(settingsscene!, transition: reveal)
          }
      }
  }
  </code></pre>
  
  <p>GameScene:</p>
  
  <pre><code>var settingsscene: SKScene?
  
  override func didMove(to view: SKView) {
      /* Setup your scene here */
  
      //
      let size = self.size
      DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async {
          [weak self] () -&gt; Void in
          self?.settingsscene = SettingsScene(size: (view.bounds.size))
      }
  </code></pre>
  
  <p>SettingsScene:</p>
  
  <pre><code>override func didMove(to view: SKView) {
  
      //Settings Background
      settingsBackground.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
      settingsBackground.zPosition = -1
  
  }
  
  override init(size: CGSize) {
  
      super.init()
      //Settings Label
      settingsLabel.text = "Settings"
      settingsLabel.fontName = "AvenirNext-Bold"
      settingsLabel.fontColor = UIColor.white
      settingsLabel.horizontalAlignmentMode = .center
      settingsLabel.verticalAlignmentMode = .center
      adjustLabelFontSizeToFitRect(labelNode: settingsLabel, rect: CGRect(x:self.frame.midX, y:self.frame.midY, width: 180, height: 110), center: true)
      settingsLabel.setScale(self.frame.width * 0.001)
      settingsLabel.position = CGPoint(x: self.frame.midX, y: self.frame.maxY - settingsLabel.frame.height)
      settingsLabel.zPosition = 1
  
      addChild(settingsLabel)
      /**** Labels ****/
  
      //Sounds Label
      soundsLabel.text = "Sounds"
      soundsLabel.fontName = "AvenirNext"
      soundsLabel.fontColor = UIColor.white
      adjustLabelFontSizeToFitRect(labelNode: soundsLabel, rect: CGRect(x:self.frame.midX, y:settingsLabel.position.y - 20, width:110, height: 70), center: true)
      soundsLabel.setScale(self.frame.width * 0.001)
      soundsLabel.zPosition = 1
  
      //Rate Label
      rateLabel.text = "Rate Game"
      rateLabel.fontName = "AvenirNext"
      rateLabel.fontColor = UIColor.white
      adjustLabelFontSizeToFitRect(labelNode: rateLabel, rect: CGRect(x:self.frame.midX, y:50, width:120, height: 110), center: true)
      rateLabel.setScale(frame.width * 0.001)
      rateLabel.zPosition = 1
  
      //Twitter Label (Follow me)
      twiterLabel.text = "Follow me"
      twiterLabel.fontName = "AvenirNext"
      twiterLabel.fontColor = UIColor.white
      adjustLabelFontSizeToFitRect(labelNode: twiterLabel, rect: CGRect(x:self.frame.midX, y:10, width:17, height: 110), center: true)
      twiterLabel.setScale(frame.width * 0.001)
      twiterLabel.zPosition = 1
  
      //iAP Label (Remove Ads)
      iapLabel.text = "Remove Ads"
      iapLabel.fontName = "AvenirNext"
      iapLabel.fontColor = UIColor.white
      adjustLabelFontSizeToFitRect(labelNode: iapLabel, rect: CGRect(x:self.frame.midX, y:70, width:40, height: 110), center: true)
      iapLabel.setScale(frame.width * 0.001)
      iapLabel.zPosition = 1
  
      //Restore iAP Label
      restoreLabel.text = "Restore Purchase"
      restoreLabel.fontName = "AvenirNext"
      restoreLabel.fontColor = UIColor.white
      adjustLabelFontSizeToFitRect(labelNode: restoreLabel, rect: CGRect(x:self.frame.midX, y:308, width:102, height: 110), center: true)
      restoreLabel.setScale(frame.width * 0.001)
      restoreLabel.zPosition = 1
  
      //About Label
      aboutLabel.text = "Restore Purchase"
      aboutLabel.fontName = "AvenirNext"
      aboutLabel.fontColor = UIColor.white
      adjustLabelFontSizeToFitRect(labelNode: aboutLabel, rect: CGRect(x:self.frame.midX, y:18, width:123, height: 312), center: true)
      aboutLabel.setScale(frame.width * 0.001)
      aboutLabel.zPosition = 1
  
      //Back Button
      backButton.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
      backButton.zPosition = 1
  
  }
  
  required init?(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
  }
  
  func SettingsSetup() {
  
      addChild(settingsBackground)
      addChild(myLabels)
      addChild(backButton)
  }
  
  override func touchesBegan(_ touches: Set&lt;UITouch&gt;, with event: UIEvent?) {
  
      for touch:AnyObject in touches {
          let location = touch.location(in:self)
  
          //BackButton Action
          if backButton.contains(location) {
              let newScene = GameScene(fileNamed: "GameScene")
              newScene?.scaleMode = .aspectFill
              let reveal = SKTransition.push(with: SKTransitionDirection.up, duration: 0.7)
              self.view?.presentScene(newScene!, transition: reveal)
          }
  
      }
  
  }
  </code></pre>
  
  <p>How can I fix it?</p>