2016-04-25 54 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

相關問題