我正在尝试在UIViewController的底部添加Admob Banner:
viewDidLoad
我在your_classes
中调用了此函数,但应用程序崩溃并显示为:
由于未捕获的异常而终止应用程序 “ NSInvalidArgumentException”,原因:“ NSLayoutConstraint” >:约束项必须分别是 查看或布局指南。'
答案 0 :(得分:0)
替换
toItem: view.safeAreaLayoutGuide.bottomAnchor,
使用
toItem: view.safeAreaLayoutGuide,
或
toItem: view,
您指定一个锚点,但例外情况是它必须是普通视图或layoutGuide
答案 1 :(得分:0)
错误在于第一个约束。 iOS 12中的正确公式是:
NSLayoutConstraint(item: bannerView,
attribute: .bottom,
relatedBy: .equal,
toItem: view.safeAreaLayoutGuide,
attribute: .bottom,
multiplier: 1,
constant: 0)
这意味着bottom
的属性bannerView
必须是equal
的{{1}}属性的bottom
。
答案 2 :(得分:0)
这有效:
func addBannerViewToView() {
bannerView = GADBannerView(adSize: kGADAdSizeBanner)
bannerView.adUnitID = "ca-app-pub-HIDDEN/HIDDEN"
bannerView.rootViewController = self
bannerView.delegate = self
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
view.addConstraints(
[NSLayoutConstraint(item: bannerView,
attribute: .bottom,
relatedBy: .equal,
toItem: view,
attribute: .bottomMargin,
multiplier: 1,
constant: 0),
NSLayoutConstraint(item: bannerView,
attribute: .centerX,
relatedBy: .equal,
toItem: view,
attribute: .centerX,
multiplier: 1,
constant: 0)
])
bannerView.load(GADRequest())
}