我正在展示这样的iAD横幅:
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 :(得分:1)
在单个UIViewController底部添加ADBanner的最简单方法是将其属性var canDisplayBannerAds: Bool
设置为true。这将触发自动横幅演示,而无需自己实例化和添加横幅。
关于您的代码,第一次看到横幅时,您在bannerViewDidLoadAd
中添加的自动布局限制尚未添加。然后每次加载新横幅时都会反复添加它们。您最好一次性在viewDidLoad
中添加约束(如果这是您打算呈现横幅的方式)。由于ADBannerView
已定义内在内容大小,因此您无需在代码中强制横幅大小。只需添加自动布局规则。
如果你需要一个例子here,你可以找到我之前做过类似问题的例子。在示例中,我使用ADBannerView
单例并将其显示在viewController视图的底部或顶部。
希望它可以提供帮助。
答案 1 :(得分:0)
在这里你可能会尝试创建超过50的Adbanner大小,这就是为什么你会让Adbanner稍微超过
iAd支持纵向和横向应用的不同横幅尺寸。广告的确切大小取决于展示横幅的设备。在iPhone上,一幅肖像广告是320 x 50点和480 x 32点的景观广告。
答案 2 :(得分: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() }