Swift:广告意外放大

Swift: Unexpected zoom in ad

我使用以下代码添加了 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()

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

更新:

我将 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)

}

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

viewDidLoad 中存在的框架属性不反映将显示在屏幕上的视图的实际框架属性。在这种方法中,已经创建了网点等等,但还没有布局。

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

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

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

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