我有Xcode 6.3.2,并且在情节提要板上实现ADBannerView时遇到问题。Xcode始终显示警告:
“横幅视图”的框架在运行时将有所不同。
我添加了3个约束,您可以在下面看到它们。
所有约束水平居中底部空间到底部布局指南= 0前导空间= 0
如何正确实施标语?
I can not use "self.canDisplayBannerAds = true" because I also use "bannerViewDidLoadAd" and "didFailToReceiveAdWithError" to resize content and also "bannerViewActionShouldBegin" and "bannerViewActionDidFinish" to pause and start again application activity.
SOLVED!
To add iAd banner using Auto Layout and Size Classes in portrait and landscape but without using canDisplayBannerAds
first declare banner var bannerView: ADBannerView!
.
Use this to set delegate and add banner to view:
func loadAds() {
bannerView = ADBannerView(adType: ADAdType.Banner)
bannerView.hidden = true
bannerView.delegate = self
self.view.addSubview(bannerView)
}
Use following code to let banner rotate with screen and resize screen content contentView
when iAd loads (bottomConstraint
is a constraint from contentView
to bottom):
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
})
}
Here you call above code to show and hide banner when loads or failed to load iAd
func bannerViewDidLoadAd(banner: ADBannerView!) {
self.layoutAnimated(true)
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
self.layoutAnimated(true)
}
现在,您可以使用bannerViewActionShouldBegin
和bannerViewActionDidFinish
暂停并开始您的应用活动。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句