【问题标题】:Swift: Unexpected zoom in adSwift:意外放大广告
【发布时间】:2015-06-20 21:12:13
【问题描述】:

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

}

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

【问题讨论】:

  • 该代码在哪里编写或从哪里调用?来自viewDidLoadviewDidLoad 中没有布局信息,因此框架和大小可能有误。
  • @luk2302 是的,定位在viewDidLoad中,为什么错了?

标签: ios swift sprite-kit mopub


【解决方案1】:

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

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

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

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

【讨论】:

  • 我将 self.AdView.frame 移到 viewDidLayoutSubviews 但缩放仍然出现。
  • @OmarDlhz 您是否尝试过记录框架并查看该属性是否真的有意义?顺便说一句:我忘了问:你在使用自动布局吗?
  • 是的,我正在使用自动布局。如何记录帧?我刚刚复制了 mopub 网站上显示的代码。
  • @OmarDlhz 好的,如果您使用自动布局,则根本无法设置框架 - 您必须操纵布局约束。
  • 我什至禁用了尺寸等级,但问题仍然存在。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多