Swift:广告意外放大

时间:2015-06-20 21:12:13

标签: ios swift sprite-kit mopub

我使用以下代码添加了MoPub横幅广告:

 self.adView.delegate = self
    self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height,
        screenWidth, MOPUB_BANNER_SIZE.height)
    self.view.addSubview(self.adView)
    self.adView.loadAd()

由于某种原因,当我运行应用程序时,屏幕不会完全显示,但它有一个奇怪的缩放。可能会发生什么?

enter image description here

更新

我将adView的框架移动到viewDidLayoutSubviews(),如下所示:

override func viewDidLoad(){
 self.adView.delegate = self
    self.view.addSubview(self.adView)
    self.adView.loadAd()
}


  override func viewDidLayoutSubviews() {

    var screenSize: CGRect = UIScreen.mainScreen().bounds
    var screenWidth = screenSize.width

    self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height,
        MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height)

}

但错误仍然存​​在,我正在使用自动布局和尺寸类

2 个答案:

答案 0 :(得分:0)

viewDidLoad中存在的框架属性不反映将在屏幕上显示的视图的实际框架属性。在这种方法中,出口已经创造了所有这些,但尚未铺设。

因此,它是创建AdView的正确位置,设置其属性......

但是布局必须在其他地方完成 - 最好的地方是viewDidLayoutSubviews。如果调用此方法,则可以确保正确设置了框架属性。

在更改代码中的任何内容之前,您只需在viewDidLoad中记录框架并将其记录在viewDidLayoutSubviews中 - 它们应该是不同的。然后你可以继续在那里移动你的布局逻辑。

答案 1 :(得分:0)

我自己解决了这个问题。使用Spritekit和场景时,请记住在呈现场景之前始终配置场景,特别是场景的 ScaleMode 。将场景的scaleMode设置为:argc后,缩放停止发生。