Ios Swift:删除Spritekit中不同场景的广告
我使用的是MoPub横幅广告,我在视图控制器的viewDidLoad中添加了以下代码:Ios Swift:删除Spritekit中不同场景的广告,ios,swift,sprite-kit,mopub,Ios,Swift,Sprite Kit,Mopub,我使用的是MoPub横幅广告,我在视图控制器的viewDidLoad中添加了以下代码: self.adView.delegate = self self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height, MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height) self.view.addSu
self.adView.delegate = self
self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height,
MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height)
self.view.addSubview(self.adView)
self.adView.loadAd()
但它使广告在所有场景中都可见,而我只希望它在主菜单场景中可见
如何在我不希望的场景中删除广告?这可能不是最好的方法,但可能是最简单的方法。您可以使用
NSNotification
向您的ViewController
广播消息,以显示或隐藏您的横幅
例如,如果在init
或viewDidLoad
上的ViewController
中添加一个“观察者”:
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "hideBannerAd",
name: "hideAd",
object: nil)
要使ViewController
侦听名为“hideAd”
的消息,然后执行名为hideBannerAd
的方法
然后执行此方法:
func hideBannerAd(){
self.adView.hidden = true
}
确保在deinit
上删除观察者,这不太可能是一个问题,因为SpriteKit
中的ViewController
持续存在,但这是一个很好的做法
deinit{
NSNotificationCenter.defaultCenter().removeObserver(self)
}
然后,当您想要显示或隐藏视图时,例如在场景转换或游戏结束方法上,您可以通过使用以下命令触发观察者来实现此hidebanerad
方法:
NSNotificationCenter.defaultCenter().postNotificationName("hideAd", object: nil)
旗帜应该隐藏起来。然后,通过将hidden
属性设置为false
,可以对类似的showBannerAd
方法重复此操作,或者您可以使用一个方法,使用adView.hidden=!adView.hidden
我希望这有帮助