我在使用IB创建iAd BannerView时遇到了与其约束相关的问题。我为iAd BannerView的底部约束和其父视图创建了IBOutlet。在ViewController的viewDidLoad()方法中,我将该outlet设置为0减去横幅高度,以将iAd BannerView放置在屏幕底部外边缘。
@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()
})
}
}
问题在于iOS 8中一切正常,在iOS 7中在viewDidLoad()后iAd BannerView的底部边距下面是两倍大小,因此当广告加载时,横幅仍然位于屏幕外。 我已经暂时解决了这个问题,通过检查设备版本并在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
}
有更好的方法来实现我的目的吗?谢谢大家!
安德烈亚
图像:
self.adBannerView.hidden = true
,然后我修改了bannerViewDidLoadAd(底部注释)。 在iOS 8上运行得很好,在iOS 7上,当广告加载后,横幅会将tableView向上推,直到它消失在顶部边缘之上。我的错误在哪里?非常感谢! - Andrea Venanzifunc bannerViewDidLoadAd(banner: ADBannerView!) { if (adBannerView.hidden == true) { adBannerView.hidden = false self.view.removeConstraint(adBannerTopConstraints) var bannerSuperViewConst = NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self.adBannerView, attribute: NSLayoutAttribute.Bottom, multiplier: 1.0, constant: 0.0) self.view.addConstraint(bannerSuperViewConst) UIView.animateWithDuration(0.4, animations: { self.view.layoutIfNeeded() })}}
- Andrea Venanzi