2015-06-26 4 views
2

У меня Xcode 6.3.2, и у меня возникла проблема с реализацией ADBannerView на раскадровке. Xcode показывает все время предупреждения:Реализация ADBannerView на раскадровке с автозапуском

Рамка для "Banner View" во время выполнения будет отличаться.

Я добавил 3 ограничения, вы можете видеть их ниже.

Все ограничения All of constraints центра по горизонтали Center horizontally Bottom пространство для нижней направляющей макета = 0 Bottom constraint Ведущее пространство = 0 enter image description here

Как правильно реализовать баннер?

Я не могу использовать «self.canDisplayBannerAds = True», потому что я использую «bannerViewDidLoadAd» и «didFailToReceiveAdWithError», чтобы изменить содержание, а также «bannerViewActionShouldBegin» и «bannerViewActionDidFinish», чтобы приостановить и начать снова активность приложения.

ответ

1

РЕШИТЬ!

Чтобы добавить баннер iAd с помощью авто макета и классов размера в портретном и ландшафтном, но без использования canDisplayBannerAds сначала объявите баннер var bannerView: ADBannerView!.

Используйте для установки делегата и добавить баннер зрения:

func loadAds() { 
    bannerView = ADBannerView(adType: ADAdType.Banner) 
    bannerView.hidden = true 
    bannerView.delegate = self 
    self.view.addSubview(bannerView) 
} 

Используйте следующий код, чтобы баннер вращаться с экрана и изменить размер содержимого экрана contentView при IAD нагрузки (bottomConstraint является сдерживающим фактором от contentView вниз):

override func viewDidLayoutSubviews() { 
    self.layoutAnimated(UIView.areAnimationsEnabled()) 
} 

func layoutAnimated(animated: Bool) { 
    var contentFrame = self.view.bounds 

    var sizeForBanner = bannerView.sizeThatFits(contentFrame.size) 

    var bannerFrame = bannerView.frame 
    if self.bannerView.bannerLoaded { 

     contentFrame.size.height -= sizeForBanner.height 
     bannerFrame.origin.y = contentFrame.size.height 
     bannerFrame.size.height = sizeForBanner.height 
     bannerFrame.size.width = sizeForBanner.width 

     let verticalBottomConstraint = self.bottomConstraint 
     verticalBottomConstraint.constant = sizeForBanner.height 
     self.view.layoutSubviews() 
     bannerView.hidden = false 
    } else { 
     bannerFrame.origin.y = contentFrame.size.height 
     bannerView.hidden = true 
     let verticalBottomConstraint = self.bottomConstraint 
     verticalBottomConstraint.constant = 0 
    } 
    UIView.animateWithDuration(animated ? 0.25 : 0.0, animations: { 
     self.contentView.layoutIfNeeded() 
     self.bannerView.frame = bannerFrame 
    }) 
} 

Здесь вы вызываете выше код, чтобы показать и скрыть баннер, когда груз или не удалось загрузить ОВР

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    self.layoutAnimated(true) 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
    self.layoutAnimated(true) 
} 

Теперь вы можете использовать bannerViewActionShouldBegin и bannerViewActionDidFinish, чтобы приостановить и начать работу с вашим приложением. :)

0

Я считаю, что это проблема автоматического макета для ADBannerView. Я реализую свои ADBannerView так же, и мне не удалось найти способ заставить замолчать предупреждение, в то же время удовлетворяя гибкость, необходимую для моего ADBannerView. Реализация AdMob GADBannerView точно так же не вызывает предупреждения Auto Layout. Как вы можете видеть на моем снимке экрана, ADBannerView действительно будет растягиваться по экрану устройств, width = 600, но Auto Layout по-прежнему считает, что он имеет размер по умолчанию, width = 480.

Лучший ответ на этот раз - просто игнорировать предупреждение.

ADBannerViewAutoLayout

Fullscreen

Смежные вопросы