Как программно добавить баннер iAd в альбомную ориентацию в наборе спрайтов Swift

Кто-нибудь знает, как программно добавить баннер iAd? Я делаю игру, используя Sprite Kit и Swift. Игра находится в ландшафтном режиме. Любая помощь приветствуется.

К вашему сведению, я использую SKScene, а не ViewControllers.

Я также пробовал этот код:

class GameViewController: UIViewController, ADBannerViewDelegate {

var adBannerView: ADBannerView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Presenting scene without using GameScene.sks
    let skView = self.view as SKView
    let myScene = Menu(size: skView.frame.size)
    skView.presentScene(myScene)

    loadAds()

}

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
    println("Leaving app to the Ad")

    return true
}

func bannerViewDidLoadAd(banner: ADBannerView!) {

    adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height - adBannerView.frame.size.height / 2)
    adBannerView.frame = CGRectOffset(adBannerView.frame,0.0,0.0)
    adBannerView.hidden = false


    println("Displaying the Ad")
}


func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {

    adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height + view.bounds.size.height)
    println("Ad is not available")
}


func loadAds() {
    adBannerView = ADBannerView(frame: CGRect.zeroRect)
    adBannerView.frame = CGRectOffset(adBannerView.frame,0,0.0)
    adBannerView.delegate = self
    adBannerView.hidden = true
    view.addSubview(adBannerView)
}

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


person Miles H.    schedule 24.03.2015    source источник
comment
Посмотрите этот пост, он написан на Obj-C, но вы можете его перевести. codewithchris.com/iad-tutorial   -  person LinusGeffarth    schedule 24.03.2015


Ответы (2)


Этот код может решить ваш вопрос:

let screenBounds: CGRect = UIScreen.mainScreen().bounds

var adBannerView: ADBannerView  
adBannerView = ADBannerView(frame: CGRectMake(0, 0, 50, screenBounds.width))
adBannerView.center = CGPoint(x: screenBounds.width/2, y: screenBounds.height-adBannerView.frame.height)
adBannerView.delegate = self
adBannerView.hidden = true
view.addSubview(adBannerView)

Надеюсь, поможет :)

person LinusGeffarth    schedule 24.03.2015
comment
Хм, я ценю помощь, Линус. К сожалению, он все еще делает то же самое. Он показывает баннер внизу с той же шириной и высотой, как если бы сцена была в портретном режиме. Однако опять же, мой должен быть в ландшафте. Я ценю помощь, хотя. Вы знаете, что может быть не так? - person Miles H.; 24.03.2015
comment
Теперь баннер расположен по центру, но по ширине не больше, чем в портретном режиме, и не выше, чем в портретном режиме. - person Miles H.; 24.03.2015
comment
Вы переключаетесь между ландшафтным и портретным режимом? - person LinusGeffarth; 24.03.2015
comment
Так ты вообще запускаешься в ландшафтном режиме? Пожалуйста, распечатайте screenBounds для меня. высота ширина - person LinusGeffarth; 24.03.2015
comment
да. Я просто скопировал ваш код и заменил его своим в loadAds(). Больше ничего не изменилось по сравнению с кодом, который я разместил в своем первоначальном посте. - person Miles H.; 24.03.2015
comment
Давайте продолжим обсуждение в чате. - person LinusGeffarth; 24.03.2015
comment
Какова была резолюция? - person Crashalot; 13.07.2015

Это сработало для меня

    var UIiAd: ADBannerView = ADBannerView()

    override func viewWillAppear(animated: Bool) {

    UIiAd.setTranslatesAutoresizingMaskIntoConstraints(false)
    UIiAd.delegate = self
    self.view.addSubview(UIiAd)
    let viewsDictionary = ["bannerView":UIiAd]
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[bannerView]|", options: .allZeros, metrics: nil, views: viewsDictionary))
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[bannerView]|", options: .allZeros, metrics: nil, views: viewsDictionary))

    }
person Alvaro    schedule 26.05.2015