当 ViewControllers 第一次加载到我的应用程序中时,AdMob 横幅不会出现在其专用的超级视图中,而是会出现在主页指示器下方,如屏幕截图所示:
我注意到这不仅发生在第一次加载中,而且有时也会发生。
当我在场景(ViewControllers)中前进和后退时,有时每个横幅都应该出现在其专用的超级视图中,有时它们不会。
Banners 的专用 superview 的最高约束是 0 到安全区。所以它们应该出现在导航栏的正下方。视图从上到下按以下顺序设计:
- 导航栏
- 安全区开始
- 一个包含横幅的简单 UIView
- 表视图
- 安全区结束
- 主页指示器
相关代码:
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 上测试它时不会出现此问题,因为它在安全区域下没有可见空间。
我猜想横幅在它的超级视图以某种方式可用之前加载,但我不确定。
更新:包含横幅的视图的约束:
- 将尾随对齐到:安全区域
- 对齐到:安全区域
- 高度等于:50
- 底部空间到:表格视图
- 顶部对齐:安全区域