我正在努力在场景中实现横幅广告,但它始终报告“线程1:EXC_BREAKPOINT(代码= EXC_ARM_BREAKPOINT,子代码= Oxdefe),程序停止运行.
我在关于iAd(“ Swift – ADBannerView”)的另一个问题中引用了 Mr. T’s answer,但仍然无法做到.
我在关于iAd(“ Swift – ADBannerView”)的另一个问题中引用了 Mr. T’s answer,但仍然无法做到.
代码如下所示:
- import UIKit
- import SpriteKit
- import iAd
- class GameViewController: UIViewController,ADBannerViewDelegate {
- @IBOutlet var adBannerView: ADBannerView
- override func viewDidLoad() {
- super.viewDidLoad()
- println("view loaded")
- //iAd
- self.canDisplayBannerAds = true
- self.adBannerView.delegate = self
- self.adBannerView.alpha = 0.0
- if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
- // Configure the view.
- let skView = self.view as SKView
- skView.showsFPS = true
- skView.showsNodeCount = true
- /* Sprite Kit applies additional optimizations to improve rendering performance */
- skView.ignoresSiblingOrder = true
- /* Set the scale mode to scale to fit the window */
- scene.scaleMode = .AspectFill
- skView.presentScene(scene)
- }
- }
- //iAd
- func bannerViewWillLoadAd(banner: ADBannerView!) {
- println("sort of working1")
- }
- func bannerViewDidLoadAd(banner: ADBannerView!) {
- self.adBannerView.alpha = 1.0
- println("sort of working2")
- }
- func bannerViewActionDidFinish(banner: ADBannerView!) {
- println("sort of working3")
- }
- func bannerViewActionShouldBegin(banner: ADBannerView!,willLeaveApplication willLeave: Bool) -> Bool {
- println("sort of working4")
- return true
- }
- func bannerView(banner: ADBannerView!,didFailToReceiveAdWithError error: NSError!) {
- }
- }
我在Main.storyboard中创建了一个ADBannerView,并将其与@IBOutlet adBannerView相关联.
有谁帮我搞清楚了?
这就是我做到的,可能并非所有这些都是必要的.
我没有在故事板中使用横幅,因此IBOutlet不是必需的.
此外,如果手动创建横幅,则无需设置self.canDisplayBannerAds
此功能(从ObjC移植)是我展示广告的方式.
- func loadAds(){
- adBannerView = ADBannerView(frame: CGRect.zeroRect)
- adBannerView.center = CGPoint(x: adBannerView.center.x,y: view.bounds.size.height - adBannerView.frame.size.height / 2)
- adBannerView.delegate = self
- adBannerView.hidden = true
- view.addSubview(adBannerView)
- }
这在viewDidLoad中调用.然后,在didLoadAd委托方法中,我设置了adBannerView.hidden = false,在didFailToReceiveAdWithError中,adBannerView.hidden = true
在这种情况下,我认为隐藏比alpha更好,因为它感觉更自然.我相信(但不确定)当隐藏时,GPU根本不会绘制视图,而alpha为0时,它仍然被绘制,但是不可见(如果我错了,请纠正我).
这是我的设置,它对我有用,所以希望它也适用于你的情况!