2016-05-22 7 views
1

私のアプリケーションには、コンテナビューと広告バナーを含むルートビューコントローラがあります。コンテナビューの下部は、自動レイアウトを使用して広告バナーの上部に固定されています。バナーを削除して、アプリケーションをフルスクリーンにすることはできません

私の要件は、広告バナーが削除され、コンテナビューがフルスクリーンにリサイズする必要があるということです。

私はそれを行うことはできません。広告バナーを削除するか、スーパービューから除外します。しかし、コンテナビューは同じサイズと同じ位置のままで、広告バナーの下部に空白が残っています。

また、私はこのコード

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

でコンテナビューに新しい制約を設定しようとしたが、その後、アプリケーションはこのエラーでクラッシュします。 「* + [NSLayoutConstraint constraintWithItem:属性:relatedBy:toItem:属性:乗算器:定数:]:0の乗数または一緒にゼロ秒アイテムと

によりキャッチされない例外 'NSInvalidArgumentException'、理由にアプリを終了最初の属性の場所は、定数に等しい位置の不正な制約を作成します。位置属性はペアで指定する必要があります。

RootView

+0

FYI、Appleは言った:** ["iAd App Networkは2016年6月30日に廃止される]"](https://developer.apple.com/news/?id=01152016a)** – Pang

答えて

2

広告バナーの高さが50であるので、ちょうどあなたのクラスへの出口としてコンテナビューの下部に制約を得ることを言うことができます。あなたが新しい制約を持つビューをリフレッシュするためにself.view.layoutIfNeeded()を呼び出す必要があります

containerViewBottomConstraint.constant = -50 

次にようにすることによって制約を調整します。

幸運を祈る!

+0

ありがとうございます。制約を変更して、広告バナーの代わりにレイアウトガイドに固定します。 viewWilAppearで0に設定してください 今はコンテナがフルスクリーンです。 しかし、それは新しい問題をもたらします。 アプリをアプリから削除してアプリ内購入履歴をクリアし、Xcodeから再インストールします。 AppDelegateでAppがクラッシュし、以下のエラーが発生しました。 'NSInternalInconsistencyException'、理由: 'ADBannerViewはUIViewControllerによって管理されるビュー階層の一部でなければなりません' アドバイスをお願いします。 –

+0

@AeyKungTaemin詳細を教えてください! – AaoIi

+0

私はエラーの原因を知っています。 viewWillAppearにself.canDisplayBannerAds = trueを設定しました。以前は、私はそれをviewDidLoadに入れました。 私はそれを置くべきですか? IB経由で広告バナーを追加しているためです。 –

関連する問題