SwiftUIの基本を身につけたい方はこちら

【Xcode/Swift】AdMobのコードを貼り付けた時の警告:’bottomLayoutGuide’ was deprecated

警告内容

AdMobのバナー広告で、公式の手順通り行うと、以下のような警告が出てしまいます。

https://developers.google.com/admob/ios/banner?hl=ja

‘bottomLayoutGuide’ was deprecated in iOS 11.0: Use view.safeAreaLayoutGuide.bottomAnchor instead of bottomLayoutGuide.topAnchor
private func addBannerViewToView(_ bannerView: GADBannerView) {
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(bannerView)
    view.addConstraints(
        [NSLayoutConstraint(item: bannerView,
                            attribute: .bottom,
                            relatedBy: .equal,
                            toItem: bottomLayoutGuide,
                            attribute: .top,
                            multiplier: 1,
                            constant: 0),
         NSLayoutConstraint(item: bannerView,
                            attribute: .centerX,
                            relatedBy: .equal,
                            toItem: view,
                            attribute: .centerX,
                            multiplier: 1,
                            constant: 0)
        ])
}

原因

原因としては、警告に書いている通りですが、bottomLayoutGuideが、iOS 11で非推奨になったためです。

解決方法

以下のように、

toItem: bottomLayoutGuide,toItem: view.safeAreaLayoutGuide,に変更し、
attribute: .top,attribute: .bottom,に変更することで警告が消えます!

private func addBannerViewToView(_ bannerView: GADBannerView) {
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(bannerView)
    view.addConstraints(
        [NSLayoutConstraint(item: bannerView,
                            attribute: .bottom,
                            relatedBy: .equal,
                            toItem: view.safeAreaLayoutGuide,
                            attribute: .bottom,
                            multiplier: 1,
                            constant: 0),
         NSLayoutConstraint(item: bannerView,
                            attribute: .centerX,
                            relatedBy: .equal,
                            toItem: view,
                            attribute: .centerX,
                            multiplier: 1,
                            constant: 0)
        ])
}

評価