2015-04-27 32 views
0

在iAds橫幅改變場景的情況下,我在執行iAds遊戲時遇到麻煩,例如每次廣告加載時,都會使屏幕抖動。請幫助解決方案,以避免這種情況發生。每次加載iAd廣告橫幅時,iAds橫幅都會跳躍/改變場景的大小。

class GameViewController: UIViewController,ADBannerViewDelegate{ 
@IBOutlet var adBannerView: ADBannerView? //connect in IB connection inspector with your ADBannerView 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { 
     // Configure the view. 
     let skView = self.view as! SKView 
     skView.showsFPS = true 
     skView.showsNodeCount = true 

     var defaultsV = NSUserDefaults.standardUserDefaults(); 
     defaultsV.setInteger(0, forKey: "gameOverCount") 
     defaultsV.setBool(false, forKey: "firstSessionEnded") 
     defaultsV.synchronize() 

     //self.adBannerView!.frame = CGRectMake(0, self.view.frame.size.height-self.adBannerView!.frame.size.height, self.adBannerView!.frame.size.width, self.adBannerView!.frame.size.height) 




     self.adBannerView!.delegate = self 
     self.adBannerView!.hidden = true //hide until ad loaded 

     self.canDisplayBannerAds = true 
     /* Sprite Kit applies additional optimizations to improve rendering performance */ 
     skView.ignoresSiblingOrder = true 
     self.adBannerView?.sizeToFit() 

     /* Set the scale mode to scale to fit the window */ 
     scene.scaleMode = .AspectFill 
     skView.presentScene(scene) 



    } 
} 

func bannerViewWillLoadAd(banner: ADBannerView!) { 
    NSLog("bannerViewWillLoadAd") 
    //self.canDisplayBannerAds = true 
    self.adBannerView!.hidden = true //hide until ad loaded 

    self.adBannerView!.frame = CGRectMake(0, self.view.frame.size.height-self.adBannerView!.frame.size.height, self.adBannerView!.frame.size.width, self.adBannerView!.frame.size.height) 



} 

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    NSLog("bannerViewDidLoadAd") 
    self.adBannerView!.frame = CGRectMake(0, self.view.frame.size.height-self.adBannerView!.frame.size.height, self.adBannerView!.frame.size.width, self.adBannerView!.frame.size.height) 

    self.adBannerView!.hidden = false //now show banner as ad is loaded 
    //self.canDisplayBannerAds = true 


} 

func bannerViewActionDidFinish(banner: ADBannerView!) { 
    NSLog("bannerViewDidLoadAd") 


    //optional resume paused game code 

} 

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool { 
    NSLog("bannerViewActionShouldBegin") 

    //optional pause game code 

    return true 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
    NSLog("bannerView") 

    self.adBannerView!.hidden = true 
} 

回答

2

你建議,你應該始終設置canDisplayBannerAds爲假,因爲這允許的viewController來調整視圖時顯示的廣告。如果您需要創建另一個Bool值來確定廣告的狀態。

//ViewControlller.m 
self.canDisplayBannerAds = false 
2

使用方法IADS橫幅:

override func viewWillAppear(animated: Bool) { 
// View is about to be obscured by an advert. 
// Pause activities if necessary 
} 

override func viewWillDisappear(animated: Bool) { 
// Advert has been dismissed. Resume paused activities 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError 
        error: NSError!) { 
    banner.removeFromSuperview() 
    self.view.layoutIfNeeded() 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.canDisplayBannerAds = true 

    rectangleAdView = ADBannerView(adType: ADAdType.MediumRectangle) 
    rectangleAdView?.delegate = self 
} 

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    self.view.addSubview(banner) 
    self.view.layoutIfNeeded() 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
    banner.removeFromSuperview() 
    self.view.layoutIfNeeded() 
} 

http://www.techotopia.com/index.php/Integrating_iAds_into_an_iOS_8_App_using_Swift