title: How to stop an ad banner resizing the frame in Swift
body: <p>I have almost completed a game for IOS in Swift and am having an issue with my banner. I managed to find some code to stop it resizing the view frame, but now it seems to resize completely randomly; sometimes not resizing (as desired) sometimes resizing as is default.</p>
  
  <pre><code>extension SKNode {
  class func unarchiveFromFile(file : String) -&gt; SKNode? {
  
      if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
          var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)!
          var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
  
          archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
          let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as! GameScene
          archiver.finishDecoding()
          return scene
      } else {
          return nil
      }
  }
  }
  
  class GameViewController: UIViewController, ADBannerViewDelegate {
  
  let gameCenterPlayer = GKLocalPlayer.localPlayer()
  
  var bannerView:ADBannerView?
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
      if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
          // Configure the view.
          let skView = self.view as! SKView
          skView.showsFPS = false
          skView.showsNodeCount = false
  
          /* Sprite Kit applies additional optimizations to improve rendering performance */
          skView.ignoresSiblingOrder = true
  
          /* Set the scale mode to scale to fit the window */
          scene.scaleMode = .AspectFill
  
          NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateNoAds:", name: "noAdsID", object: nil)
  
          skView.presentScene(scene)
  
      }
  
  // disabling ads if no-ads is purchased
  
      if bannerAdsOff != true {
          self.canDisplayBannerAds = true
      } else {
          self.canDisplayBannerAds = false
      }
  
      bannerView = ADBannerView()
      bannerView?.delegate = self
      bannerView?.frame = CGRectZero
      bannerView?.backgroundColor = UIColor.clearColor()
  
      bannerView!.frame = CGRectMake(0, self.view.frame.size.height - self.bannerView!.frame.size.height, self.bannerView!.frame.size.width, self.bannerView!.frame.size.height)
      bannerView?.hidden = true
  
      view.addSubview(bannerView!)
  
  }
  
  
  func updateNoAds(notification: NSNotification) {
  
      self.canDisplayBannerAds = false
  
      println("turning can Display banner ads off")
  
      self.bannerView?.hidden = true
  
      println("bannerview hidden = \(self.bannerView?.hidden)")
  
  }
  
  override func shouldAutorotate() -&gt; Bool {
      return true
  }
  
  override func supportedInterfaceOrientations() -&gt; Int {
      if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
          return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
      } else {
          return Int(UIInterfaceOrientationMask.All.rawValue)
      }
  }
  
  override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
      // Release any cached data, images, etc that aren't in use.
  }
  
  override func prefersStatusBarHidden() -&gt; Bool {
      return true
  }
  
  func bannerViewDidLoadAd(banner: ADBannerView!) {
  
      if bannerAdsOff != true {
  
      self.bannerView?.hidden = false
  
      }
  }
  
  func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -&gt; Bool  {
      return willLeave
  }
  
  func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
      self.bannerView?.hidden = true
  }
  
  }
  </code></pre>
  
  <p>I have read somewhere that it has to do with the canDisplayBannerAds setting, but if I change that to false, it just means no ads are shown at all.</p>
  
  <p>I'm hoping to release tomorrow and would really like to have this fixed for the release :)</p>