删除广告横幅,不能让应用变成全屏

Posted

技术标签:

【中文标题】删除广告横幅,不能让应用变成全屏【英文标题】:Remove Ads Banner and can not make App becomes Full Screen 【发布时间】:2016-05-22 13:16:49 【问题描述】:

我的应用有一个根视图控制器,其中包含容器视图和广告横幅。 Container View 的底部使用 Auto Layout 固定到 Ads Banner 的顶部。

我的要求是当广告横幅被移除时,容器视图必须调整为全屏。

我做不到。我通过将其设置为 nil 或将其从 superview 中删除来删除广告横幅。但是 Container View 仍然保持相同的大小和相同的位置,在 Ads Banner 所在的底部留下一个空白区域。

我还尝试使用此代码为容器视图设置新约束

containerViewBottomConstraint = NSLayoutConstraint(item: containerView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: view.superview, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)

但随后应用程序因此错误而崩溃。

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'* +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]:乘数为 0 或第二个项目的位置为零第一个属性创建一个非法的位置约束,该约束等于一个常数。位置属性必须成对指定。

【问题讨论】:

仅供参考,Apple 说:"The iAd App Network will be discontinued as of June 30, 2016. " 【参考方案1】:

假设广告横幅高度为 50,因此只需将容器视图的底部约束作为类的出口。

然后通过以下方式调整约束:

containerViewBottomConstraint.constant = -50

您可能需要调用 self.view.layoutIfNeeded() 以使用新约束刷新视图。

祝你好运!

【讨论】:

谢谢。只需将约束更改为固定到底部布局指南而不是广告横幅。并在 viewWilAppear 中将其设置为 0 现在容器是全屏的。但它带来了新的问题。我从设备中删除应用程序以清除应用程序内购买历史记录并从 Xcode 重新安装。现在 App 在 AppDelegate 中崩溃并出现以下错误。 “NSInternalInconsistencyException”,原因:“ADBannerView 必须是由 UIViewController 管理的视图层次结构的一部分”,请告知。 @AeyKungTaemin 请给我更多细节! 我知道是什么导致了错误。我把 self.canDisplayBannerAds = true 放在 viewWillAppear 中。以前,我把它放在 viewDidLoad 中。但我应该把它说出来。因为我已经通过 IB 添加了广告横幅。 @AeyKungTaemin 您可以仅在需要时添加 canDisplayAds,即使您有出口!如果不需要,请不要添加它。

以上是关于删除广告横幅,不能让应用变成全屏的主要内容,如果未能解决你的问题,请参考以下文章

应用购买中的“移除广告”应该删除奖励广告以及横幅广告和插页式广告吗?

立即移除 AdMob 横幅?

关于“此内容不能在框架中显示”问题

iOS 和 Android:在不更新整个应用程序的情况下摆脱 Admob 横幅广告的最快方法?

iAd 横幅在 segue 上变白

w21微信小程序不能全屏显示?