【Swift UIKit】'bottomLayoutGuide' was deprecated in iOS 11.0: Use view.safeAreaLayoutGuide.bottomAnchor instead of bottomLayoutGuide.topAnchorの解決法
この記事からわかること
- SwiftのUIKitでNSLayoutConstraintで発生した警告の解決方法
- 警告:'bottomLayoutGuide' was deprecated in iOS 11.0: Use view.safeAreaLayoutGuide.bottomAnchor instead of bottomLayoutGuide.topAnchorとは?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
SwiftのUIKitでAdMobのバナー広告実装時に公式のコードをコピペしたら警告が発生したので解決方法をまとめていきます。
発生した警告
発生したのはAutoLayoutをNSLayoutConstraintで定義していた部分でした。これはバナービューを画面の1番下側に配置する制約です。
警告が発生したコード
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' was deprecated in iOS 11.0: Use view.safeAreaLayoutGuide.bottomAnchor instead of bottomLayoutGuide.topAnchor
解決方法
警告内容は「iOS11以降からbottomLayoutGuideが非推奨になり代わりにview.safeAreaLayoutGuide.bottomAnchorまたはbottomLayoutGuide.topAnchorを使用してね」とのことでした。
しかしこの値をそのまま指定するとビルドはできるのですがなぜかアプリが停止してしまいました。
結果以下のようtoItem
にはview.safeAreaLayoutGuide
をattribute
には.bottom
を渡すと正常に動作して警告も解消することができました。
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)
])
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。