UIView需要很长时间才能加载(Spritekit和AdMob)

时间:2017-08-19 10:19:15

标签: swift3 uiview admob

我希望在游戏开始时制作游戏,横幅广告出现,但我发现该视图至少需要一分钟才能加载。我尝试在不同的线程上执行此操作,但它不起作用。我在GameViewController.swift中创建了视图,并在GameScene.swift中添加了子视图。游戏弹出窗口也是一组SKSpriteNodes和SKLabelNodes。

GameViewController.swift

class GameViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        print("READY__$$$$$$$$$$$$$$$$$$$_________________.")

        banner = GADBannerView(adSize: kGADAdSizeFullBanner)
        banner.adUnitID = "ca-app-pub-3940256099942544/2934735716"

        let request = GADRequest()
        banner.load(request)

        banner.frame = CGRect(x: 0, y: (view?.bounds.height)! - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)

        banner.rootViewController = self

        if let view = self.view as! SKView? {
            // Load the SKScene from 'GameScene.sks'
            if let scene = SKScene(fileNamed: "IntroScene") {
                // Set the scale mode to scale to fit the window
                scene.scaleMode = .aspectFill

                // Present the scene
                view.presentScene(scene)
            }

            view.ignoresSiblingOrder = true

            view.showsFPS = true
            view.showsNodeCount = true
        }
    }

    override var shouldAutorotate: Bool {
        return true
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        if UIDevice.current.userInterfaceIdiom == .phone {
            return .allButUpsideDown
        } else {
            return .all
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

    override var prefersStatusBarHidden: Bool {
        return true
    }
}

GameScene.swift

func spawnAd() {

    print("READY___________________.")
    DispatchQueue.main.async(execute: {
        self.view?.addSubview(banner)
    })




    //        DispatchQueue.global(qos: .userInteractive).async {
    //            DispatchQueue.main.async {
    //                self.view?.addSubview(banner)
    //            }
    //
    //        }

}

屏幕上的游戏弹出

func spawnGameOverMenu() {

    let dimPanel = SKSpriteNode(color: UIColor.brown, size: self.size)
    dimPanel.alpha = 0.0
    dimPanel.zPosition = 9
    dimPanel.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
    self.addChild(dimPanel)

    let fadeAlpha = SKAction.fadeAlpha(by: 0.5, duration: 0.6)
    dimPanel.run(fadeAlpha)

    gameOverMenu = SKSpriteNode(color: bgColor, size: CGSize(width: self.frame.width - 5, height: self.frame.height / 2))
    gameOverMenu.position = CGPoint(x: self.frame.midX, y: self.frame.minY - self.frame.height)
    gameOverMenu.name = "gameOverMenu"
    gameOverMenu.zPosition = 10
    self.addChild(gameOverMenu)
    spawnGameOverLabel()
    spawnResetLbl()

    spawnAd()

    let moveUp = SKAction.moveTo(y: self.frame.midY, duration: 1.0)

    gameOverMenu.run(moveUp)

}

1 个答案:

答案 0 :(得分:0)

我弄清楚它为什么不起作用,我在加载请求后设置了根视图控制器。

banner = GADBannerView(adSize:kGADAdSizeFullBanner)         banner.adUnitID =“ca-app-pub-3940256099942544/2934735716”

banner.rootViewController = self

    let request = GADRequest()
    banner.load(request)

    banner.frame = CGRect(x: 0, y: (view?.bounds.height)! - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)