2016-04-25 57 views
1

在我的游戏文件GameScene中,我写了iAd的代码在那里显示。如何在SpriteKit中添加iAd并在场景更改时将其停用?

func addiAd(){ 
    bannerView = ADBannerView(adType: .Banner) 
    bannerView.delegate = self 
    bannerView.hidden = true 
    bannerView.frame = CGRectOffset(bannerView.frame, 0.0, 0.0) 
    bannerView.center = CGPointMake(bannerView.center.x, 
    (view?.bounds.size.height)! - bannerView.frame.size.height/2) 
    view!.addSubview(bannerView) 
    print("iAd is working") 
} 

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    bannerView.hidden = false 
} 

func bannerViewActionDidFinish(banner: ADBannerView!) { 
    bannerView.removeFromSuperview() 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
    bannerView.hidden = true 
} 

嗯,它首先看起来像它的工作原理,但并不完美,因为当一个场景已转变称为GameOverScene另一游戏场景文件,我bannerView不会消失,并保持它似乎永远,直到运行结束。我想停用这个。我的代码写错了吗?在我的源代码中,总共需要GameSceneGameOverScene两个adBanner视图。我对这个错误的假设是我没有在GameViewController中编写这些代码,但我对此不确定。你能告诉我如何实现它并解释我必须写在哪里?

+1

只是让你知道,苹果是封闭的iAd网络6月30日 –

回答

1

在iAd委托方法中,您可以更改横幅的alpha属性。例如:

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    bannerView.alpha = 1.0 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
    bannerView.alpha = 0.0 
} 

然后当你改变场景或想确保了iAd的横幅不出现,你可以设置其属性hidden。例如:

func hideBanner() { 
    // Call whenever you don't want the ADBannerView to be on screen 
    bannerView.hidden = true 
} 

func showBanner() { 
    // Call when you want the ADBannerView to be on screen 
    bannerView.hidden = false 
} 

这就要求你同时更新您的addiAd功能:更改bannerView.hidden = truebannerView.alpha = 0.0

最后,你不应该在这里移除从上海华盈的iAd的横幅:

func bannerViewActionDidFinish(banner: ADBannerView!) { 
    bannerView.removeFromSuperview() 
} 
+0

谢谢您的回答!我能再问一个问题吗?当显示它时,使用x按钮删除bannerView会更好。有没有简单的代码来实现这一点? – bagels

+0

@ryohei为您的关闭按钮创建一个自定义UIButton并将其放置在您的ADBannerView的角落。然后让UIButton在被点击时调用hideBanner func。 –

+0

啊!凉!认为有一些内置的代码!只需添加UIButton。我懂了。感谢您的回答 :) – bagels