Swift:删除 Spritekit 中不同场景的广告
Posted
技术标签:
【中文标题】Swift:删除 Spritekit 中不同场景的广告【英文标题】:Swift: Remove ads different scene in Spritekit 【发布时间】:2015-09-04 19:44:37 【问题描述】:我正在使用 MoPub 横幅广告,我在 View Controller 的 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.addSubview(self.adView)
self.adView.loadAd()
但是当我只希望它在主菜单场景中可见时,它会使广告在所有场景中可见。
如何在不希望出现的场景中删除广告?
【问题讨论】:
【参考方案1】:这可能不是最好的方法,但它可能是最简单的。您可以使用NSNotification
向您的ViewController
广播一条消息,只要您想显示或隐藏您的横幅。
例如,如果您在ViewController
上的init
或viewDidLoad
上添加“观察者”:
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)
然后,当您想要显示或隐藏视图时,例如在场景转换或游戏结束方法上,您可以通过使用以下方法触发观察者来实现此 hideBannerAd
方法:
NSNotificationCenter.defaultCenter().postNotificationName("hideAd", object: nil)
并且横幅应该隐藏。然后可以通过将hidden
属性设置为false
对类似的showBannerAd
方法重复此操作,或者您可以使用一个方法来简单地使用adView.hidden = !adView.hidden
切换隐藏属性。
我希望这会有所帮助。
【讨论】:
以上是关于Swift:删除 Spritekit 中不同场景的广告的主要内容,如果未能解决你的问题,请参考以下文章
(Swift + Spritekit) - 完全删除节点及其数据
如何使用 Swift 正确切换 SpriteKit 中的 SKScene?