У меня возникла проблема между iAd BannerView, созданной в IB, и его ограничениями. У меня есть IBOutlet для нижнего ограничения iAd BannerView с супервидом. В viewDidLoad() ViewController я устанавливаю выход на 0 минус высота баннера, чтобы поместить iAd BannerView за пределы нижней границы экрана.Autolayout отличается от iOS 7 и iOS 8
@IBOutlet var adBannerView: ADBannerView!
@IBOutlet var adBannerBottomConstraints: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
// Configure answers index
self.arrayAnswIndex = ["A", "B", "C", "D", "E"]
// TableView Cell
var nib = UINib(nibName: "QuestionTableViewCell", bundle: nil)
self.simulazioneTableView.registerNib(nib, forCellReuseIdentifier: self.QuestionCellIdentifier)
var nibAnswer = UINib(nibName: "AnswerTableViewCell", bundle: nil)
self.simulazioneTableView.registerNib(nibAnswer, forCellReuseIdentifier: self.AnswerCellIdentifier)
// NavigationBar
self.navigationBarSettings()
// TabBar
self.tabBarController?.tabBar.hidden = true
// iAd Banner
adBannerView.hidden = true
adBannerBottomConstraints.constant = 0 - self.adBannerView.bounds.size.height
}
При загрузке объявления анимировать ограничение, чтобы показать баннер с:
func bannerViewDidLoadAd(banner: ADBannerView!) {
if (adBannerView.hidden == true) {
//now show banner
adBannerView.hidden = false
self.adBannerBottomConstraints.constant = self.adBannerBottomConstraints.constant + self.adBannerView.frame.size.height
UIView.animateWithDuration(0.4, animations: {
self.view.layoutIfNeeded()
})
}
}
Проблемой в том, что в прошивке 8 все работает нормально, в прошивке 7 вместо ОВР BannerView в два раз его размера под дном margin после viewDidLoad(), и поэтому при загрузке объявления баннер остается за пределами экрана. Я временно разрешил проблему с проверкой версии устройства и соответствующим образом изменил ограничение в viewDidLoad().
// iAd Banner
adBannerView.hidden = true
if ((UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8.0) {
adBannerBottomConstraints.constant = 0 - self.adBannerView.bounds.size.height
} else {
adBannerBottomConstraints.constant = 0
}
Есть лучший способ выполнить мою цель? Спасибо, ребята!
Andrea
Изображения:
Спасибо, матовый, вы совершенно правы. Поэтому я изменил ограничения в IB: я закрепил вершину iAd BannerView с нижней частью супервизора, и я удалил предыдущее ограничение нижнего баннера. Я удалил предыдущую конфигурацию iAd в viewDidLoad(), оставив только 'self.adBannerView.hidden = true', а затем я изменил bannerViewDidLoadAd (нижний комментарий). На iOS 8 отлично работает, на iOS 7 вместо viewDidLoad() баннер правильно размещен, но когда объявление загружается, баннер подталкивает таблицуView до тех пор, пока он не исчезнет выше верхнего поля. Где моя ошибка? Спасибо огромное! –
[iOS 7 Error Image] (http://tinyurl.com/lqhqj3m) | 'FUNC bannerViewDidLoadAd (баннер: ADBannerView!) { если (adBannerView.hidden == верно) { adBannerView.hidden = ложь self.view.removeConstraint (adBannerTopConstraints) вар bannerSuperViewConst = NSLayoutConstraint (пункт: self.view, атрибут: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Ровный, toItem: self.adBannerView, атрибут: NSLayoutAttribute.Bottom, умножитель: 1.0, константа: 0,0) self.view.addConstraint (bannerSuperViewConst) UIView.animateWithDuration (0.4, анимации: { self.view.layoutIfNeeded() })}} ' –