Контроллер не изменяет размер представлений при добавлении ADBannerView

Читая документацию Apple по iAD, у меня сложилось впечатление, что если я добавлю ADBannerView в дерево представлений моего контроллера, то другие представления будут масштабироваться в соответствии с добавлением. Но, видимо, это не так, как вы можете видеть здесь:

введите здесь описание изображения

Это код, который я использую:

import UIKit
import SpriteKit
import iAd

class GameViewController: UIViewController, ADBannerViewDelegate {

    var mainView: SKView!
    let adBanner = ADBannerView(adType: .Banner)

    override func viewDidLoad() {
        super.viewDidLoad()

        mainView = self.view as? SKView
        mainView.showsDrawCount = true
        mainView.showsNodeCount = true
        mainView.showsFPS = true

        adBanner.delegate = self
        adBanner.center = CGPoint(x: adBanner.center.x, y: mainView.bounds.size.height - adBanner.frame.size.height / 2)
        adBanner.hidden = true
    }

    func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
        return true
    }

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
        NSLog("error: \(error)")
    }

    func bannerViewWillLoadAd(banner: ADBannerView!) {
        print("WILL LOAD BANNER")
    }

    func bannerViewDidLoadAd(banner: ADBannerView!) {
        print("Loaded Ad \(banner)")
        adBanner.hidden = false
    }

    override func viewWillAppear(animated: Bool) {
        let helloScene = HelloScene(size: mainView.frame.size)
        mainView.presentScene(helloScene)
        mainView.addSubview(adBanner)
    }

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

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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

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

Я что-то пропустил ? Если я установлю self.canDisplayBannerAds = true контроллера, то баннер будет правильно отображаться внизу, а остальные масштабируются, как я и ожидал.

введите здесь описание изображения

Это потому, что я использую presentScene, который добавляет SKScene, а не представление?

ОБНОВЛЕНИЕ

Я пытался добавить ограничения, но, думаю, мне предстоит много читать, потому что я еще не мог этого понять :) Я некоторое время гуглил и придумал это, но это ничего не изменило, поэтому, вероятно, я я делаю это неправильно (добавлено это к viewDidLoad :

mainView.addSubview(adBanner)
let viewsDictionary = ["adBanner": adBanner]
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[adBanner]|", options: NSLayoutFormatOptions.AlignAllBaseline, metrics: nil, views: viewsDictionary))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[adBanner]|", options: NSLayoutFormatOptions.AlignAllBaseline, metrics: nil, views: viewsDictionary))

person sasklacz    schedule 11.11.2015    source источник
comment
Вам нужно ограничение между видом вашего баннера и вашей skscene и настроить ограничение, когда вид баннера появляется/исчезает.   -  person Paulw11    schedule 11.11.2015
comment
хм ок попробую.   -  person sasklacz    schedule 11.11.2015


Ответы (1)