我正在努力在现场实施横幅广告,但它总是报告“线程1:EXC_BREAKPOINT(代码= EXC_ARM_BREAKPOINT,子代码= Oxdefe),程序停止运行。我在有关iAd()的另一个问题中引用了T先生的回答。 Swift-ADBannerView“),但仍然无法实现。
代码如下:
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
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
viewDidLoad
didLoadAd
adBannerView.hidden = false
didFailToReceiveAdWithError
adBannerView.hidden = true
我觉得hidden比alpha这种情况更好,因为它感觉更自然。我相信(但不确定)隐藏时,GPU根本不会绘制视图,而Alpha为0时,它仍然被绘制,但变为不可见(如果我错了,请纠正我)。
hidden
alpha
这是我的设置,对我有用,因此希望它也适用于您的情况!