Когда ViewControllers загружаются в мое приложение впервые, баннеры AdMob не отображаются в их выделенных суперпредставлениях, а вместо этого баннеры появляются под индикатором home, как показано на скриншоте:
Я заметил, что это происходит не только при первой загрузке, но и время от времени.
Когда я иду вперед и назад вокруг сцен (ViewControllers), иногдакаждый баннер отображается в своем выделенном суперпредставлении, как и должно быть, иногда они этого не делают.
Верхние ограничения выделенных суперпредставлений для баннеров - 0 для безопасной зоны. Поэтому они должны появиться прямо под панелью навигации. Виды спроектированы в следующем порядке сверху вниз:
- Панель навигации
- Безопасная зона начинается
- Простой UIView для размещения баннера
- TableView
- Безопасная зона заканчивается
- Домашний индикатор
Код, связанный с:
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()
в func viewDidLoad()
вместо viewWillAppear()
, но ничего не изменилось.
Я протестировал и заметил это поведение как на симуляторе iOS, так и на физическом устройстве.
Эта проблема не возникает, когда я тестирую его на iPhone 8, поскольку в безопасной зоне у него нет видимого пространства.
Я предполагаю, что баннер загружается до того, как его суперпредставление каким-то образом доступно, ноЯ не уверен.
Обновление: Ограничения представления, которое содержит баннер:
- Выровнять трейлинг по: Безопасной зоне
- Выровнятьведущий к: Безопасная зона
- Высота равна: 50
- Нижнее пространство для: Вид таблицы
- Выровнять сверху по: Безопасная зона