首页 > 解决方案 > AdMob 横幅会在首次加载时出现在首页指示器下方,并且不时出现

问题描述

当 ViewControllers 第一次加载到我的应用程序中时,AdMob 横幅不会出现在其专用的超级视图中,而是会出现在主页指示器下方,如屏幕截图所示:

横幅出现在

我注意到这不仅发生在第一次加载中,而且有时也会发生。

当我在场景(ViewControllers)中前进和后退时,有时每个横幅都应该出现在其专用的超级视图中,有时它们不会。

Banners 的专用 superview 的最高约束是 0 到安全区。所以它们应该出现在导航栏的正下方。视图从上到下按以下顺序设计:

  1. 导航栏
  2. 安全区开始
  3. 一个包含横幅的简单 UIView
  4. 表视图
  5. 安全区结束
  6. 主页指示器

相关代码:

override func viewWillAppear(_ animated: Bool) {
    setBanner()
}

func setBanner() {
    banner.delegate = self
    banner.rootViewController = self
    banner.load(GADRequest())
    GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers =
    [ "kGADSimulatorID" ]        
    bannerContainerView.addSubview(banner)
}

我把setBanner()infunc viewDidLoad()而不是viewWillAppear(),但没有任何改变。

我在 iOS 模拟器和物理设备上测试并注意到了这种行为。

当我在 iPhone 8 上测试它时不会出现此问题,因为它在安全区域下没有可见空间。

我猜想横幅在它的超级视图以某种方式可用之前加载,但我不确定。

更新:包含横幅的视图的约束:

标签: iosswiftgadbannerview

解决方案


这是您添加横幅广告的视图的约束问题。请检查一下,或者您能否说明您给出了哪些限制?


推荐阅读