Почему показ промежуточной рекламы в Google изменяет высоту моей панели навигации? Xcode 11,3 iOS 13 - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь отобразить промежуточную рекламу в своем приложении, когда пользователь нажимает кнопку печати, но после отклонения рекламы высота моего навигационного бара увеличилась с 44 до 96 (на физическом тестовом устройстве iPhone 11 Pro Max). ). Такое же поведение происходит в симуляторе как для iPhone 8, так и для iPhone 11 Pro Max.

Я хотел бы знать как, почему это происходит - и как предотвратить это. В журнале появляется предупреждающее сообщение (см. Ниже) примерно в то же время, когда изменяется высота, но я не уверен, связано ли это предупреждение с моей проблемой navigationBar (или как ее предотвратить). Объявление отображается успешно.

Если я установлю «myProfile.disableAds = true», показанная ниже функция displayInterstitialAd () не будет запущена, объявление не будет отображаться, а высота навигационной панели не изменится.

Вот мой код:

    func createAndLoadInterstitial() -> GADInterstitial {
        var interstitial = GADInterstitial(adUnitID: adUnitInterstitialID)
        interstitial.delegate = self
        interstitial.load(GADRequest())
        print("Loading interstitial...")
        return interstitial
    }

    func displayInterstitialAd() {
        if interstitial.isReady && myProfile.disableAds == false {
            print("Debug:  Interstitial:  NavBarFrame: \(navigationController?.navigationBar.frame)")
            interstitial.present(fromRootViewController: self)
            print("Debug:  Interstitial:  NavBarFrame: \(navigationController?.navigationBar.frame)")
        }
    }


    func interstitialDidDismissScreen(_ ad: GADInterstitial) {
        print("Debug:  InterstitialDelegateDidDismiss:  NavBarFrame: \(navigationController?.navigationBar.frame)")
        print("interstitialDidDismissScreen")
        interstitial = createAndLoadInterstitial() 
    }

А вот и вывод:

Print Button tapped...Showing interstitial ad...
Debug:  Interstitial:  NavBarFrame: Optional((0.0, 44.0, 414.0, 44.0))
interstitialWillPresentScreen
Debug:  InterstitialDelegateWillPresent:  NavBarFrame: Optional((0.0, 44.0, 414.0, 44.0))
Debug:  Interstitial:  NavBarFrame: Optional((0.0, 44.0, 414.0, 44.0))
interstitialWillDismissScreen
2020-01-23 08:36:16.387071-0500 MyApp[53938:23813577] [View] First responder error: non-key window attempting reload - allowing due to manual keyboard (first responder window is <UIWindow: 0x101c4ca10; frame = (0 0; 414 896); hidden = YES; gestureRecognizers = <NSArray: 0x28380a880>; layer = <UIWindowLayer: 0x2836f10a0>>, key window is <UIWindow: 0x101c26b50; frame = (0 0; 414 896); gestureRecognizers = <NSArray: 0x2838e9860>; layer = <UIWindowLayer: 0x28368a8a0>>)
Debug:  InterstitialDelegateDidDismiss:  NavBarFrame: Optional((0.0, 44.0, 414.0, 96.0))
interstitialDidDismissScreen
Loading interstitial...

1 Ответ

0 голосов
/ 26 января 2020

Это заняло несколько дней - но я понял это.

После отмены модального полноэкранного рекламного объявления моя панель навигации восстанавливалась. Мой viewDidLoad установил «prefersLargeTitles = true» для NavigationBar.appearance (). Я (неправильно) подумал, что это уже было применено к NavBar, но, видимо, это относится только к недавно созданным NavigationBar. Это стало причиной неожиданного изменения высоты. Совершенно моя вина. Извините, что потратил время каждого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...