2015-03-12 3 views
0

Я показывающей ОВР баннер, как это:Autolayout ограничение с быстрым применяться только после того, как кран

override func viewDidLoad() { 
    ... 
    initializeBannerAd() 
} 

func initializeBannerAd() { 
    let banner = ADBannerView(adType: ADAdType.Banner) 
    banner.frame = CGRectMake(0,-100, self.view.frame.width, 100) 
    banner.delegate = self 
    banner.hidden = true 
    self.view.addSubview(banner) 
} 

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    banner.hidden = false 
    banner.frame = CGRectMake(0, self.view.frame.size.height-100, self.view.frame.width, 100) 

    banner.setTranslatesAutoresizingMaskIntoConstraints(false) 
    let viewsDictionary = ["banner":banner] 
    self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[banner]|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)) 
    self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[banner]-0-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)) 
    self.view.layoutIfNeeded() 
} 

моя проблема:

  • Первые баннерные нагрузки отлично и сидит плотно в нижней части экрана
  • Всякий раз, когда баннер обновляется, он прыгает вверх и остается там до тех пор, пока я не вытащу в любом месте на вид, затем он вернется к основанию

как я могу это исправить? почему ограничение применяется только после того, как я нажал?

+0

Как сделал обновление баннера? – gabbler

+0

попробуйте "V: [banner] -0- |" – Diversity

+0

Я понимаю, что вы хотите, чтобы рекламный баннер был внизу, старайтесь ограничивать его вправо, влево и снизу шириной, связанной с контейнером и высотой для себя. – Yaman

ответ

1

Самый простой способ для вас, чтобы добавить ADBanner в нижней части одного UIViewController устанавливает это свойство var canDisplayBannerAds: Bool истина. Это вызовет автоматическую презентацию баннера без необходимости создавать экземпляр и добавлять баннер самостоятельно.

Что касается вашего кода при первом появлении баннера, ограничения автоматического макета, которые вы добавляете в bannerViewDidLoadAd, еще не добавлены. Затем они будут добавляться снова и снова каждый раз, когда загружается новый баннер. Вам лучше добавить ограничения в viewDidLoad раз и навсегда (в случае, если вы намерены представить баннер). Поскольку ADBannerView имеет собственный размер содержимого, вам не нужно force размер баннера в коде. Просто добавьте правила автоматического макета.

Если вам нужен пример, here, вы можете найти тот, который я сделал некоторое время назад для подобных вопросов. В примере я использую синглтон ADBannerView и представляю его в нижней или верхней части вида viewController.

Надеюсь, это поможет.

+0

блестящий, не знал, что один :) спасибо –

0

здесь вы можете пытаться создать Adbanner размера более 50 Вот почему вы получаете Adbanner немного выше

ОВРА поддерживают различные размеры баннеров для портретных и альбомных приложений. Точный размер рекламы зависит от устройства, на котором отображается баннер. На iPhone рекламная реклама составляет 320 х 50 точек и 480 х 32 точки для пейзажной рекламы.

Реф. https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/iAd_Guide/BannerAdvertisements/BannerAdvertisements.html

0

Вы пробовали что-то вроде этого?

func initializeBannerAd() { 
    let banner = ADBannerView(adType: ADAdType.Banner) 
    banner.setTranslatesAutoresizingMaskIntoConstraints(false) 
    banner.delegate = self 
    banner.hidden = true 
    self.view.addSubview(banner) 
    var constraints = [AnyObject]() 
    constraints.append(NSLayoutConstraint(item: banner, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1.0, constant: 0.0)) 
    constraints.append(NSLayoutConstraint(item: banner, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1.0, constant: 0.0)) 
    constraints.append(NSLayoutConstraint(item: banner, attribute: .Right, relatedBy: .Equal, toItem: self.view, attribute: .Right, multiplier: 1.0, constant: 0.0)) 
    constraints.append(NSLayoutConstraint(item: banner, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 100.0)) 
    NSLayoutConstraint.activateConstraints(constraints) 
} 
func bannerViewDidLoadAd(banner: ADBannerView!) { 
    banner.hidden = false 
    self.view.layoutIfNeeded() 
}