プログラムでスクロールビュー内にAdMobバナー広告を配置しようとしています。私が持っている現在の実装(Admob docsに基づいて)は、UIビューの一番下に広告を配置し、ユーザーがスクロールするとスティッキーに保ちます。これは、scrollViewの内容をカバーするために発生しますSwiftでスクロールビューにAdMob広告を埋め込む4
私の最初の考えは広告の配置を含み、scrollview以内にそのインラインを置くのUIViewを作成することでした。ただし、新しいadViewContainerに広告を配置するために関数を使用すると、表示されません。私は、それがどのビューに追加されているかとは関係があると思う。
ここで広告を設定して、関数を呼び出してビューに追加する方法を説明します。これは正常に動作しています:
import GoogleMobileAds
class VC: UIViewController, GADBannerViewDelegate {
var scrollView: UIScrollView!
var adViewBackground:UIView!
var bannerView:GADBannerView!
override func viewDidLoad() {
//configure scroll view
...
// configure ad view container and add to scrollview
adViewContainer = UIView(frame: CGRect(x: 0, y: yCoord, width: view.frame.size.width, height: 50))
adViewBackground.backgroundColor = UIColor.darkGray
view.addSubview(scrollView)
scrollView.addSubview(adViewContainer)
//configure ad and call function to add to view
bannerView = GADBannerView(adSize: kGADAdSizeBanner)
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.delegate = self
bannerView.load(GADRequest())
addBannerViewToView(bannerView)
}
}
この機能は以下のとおりです。 3番目と4番目の行でview
をadViewContainer
に変更すると、広告が表示されず、コンソールに制約に関するエラーが表示されます。ビューに制約をインストールできません。
func addBannerViewToView(_ bannerView: GADBannerView) {
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView) //breaks if view changed to adViewBackground
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)
])
}
私はプログラム的制約を使用するビット新たなんだ、それを解決する最良の方法はよく分かりません。コンテナビュー内に広告を配置する代わりに、スクロールビューに直接インラインで配置するために制約を使用する方がよいでしょう。私はどんな提案にも開放的です。