質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

2905閲覧

親View内に作成したUIViewの中にViewを表示させたい

sena14

総合スコア109

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/06/08 06:10

編集2019/06/09 07:21

Storyboadにてバナー広告表示領域(AdView)を確保しそのUIViewの中心にバナー広告を表示させたいです。
下記のようにやってみたのですがうまくいきません。

bannerViewでなく普通のUIViewでも試してみたのですが表示されませんでした。
self.AdView.addSubview(bannerView)でなく
self.view.addSubview(bannerView)とするとbannerView,UIView共に表示されます。

なぜAdViewに表示されないのかわからず困っています。
よろしくお願いします。

import UIKit import GoogleMobileAds class ViewController: UIViewController { let AdMobID = "ca-app-pub-3940256099942544/6300978111"//Test var bannerView: GADBannerView! @IBOutlet weak var AdView: UIView! override func viewDidLoad() { super.viewDidLoad() showAd() } //広告表示 func showAd(){ bannerView = GADBannerView(adSize: kGADAdSizeBanner) bannerView.frame.size = CGSize(width:self.view.frame.width, height:bannerView.frame.height) bannerView.center = AdView.center bannerView.adUnitID = AdMobID bannerView.rootViewController = self bannerView.load(GADRequest()) self.AdView.addSubview(bannerView) } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/06/14 08:13

そもそもAdViewが表示されていないのでは?(制約がおかしい、など) viewDidAppearの中に print(AdView) を追加して、そのログを書いて下さい。
sena14

2019/06/14 09:04

<UIView: 0x7fb277c14b80; frame = (0 796.5; 414 99.5); autoresize = RM+BM; layer = <CALayer: 0x60000077ef80>>と表示されました。
fuzzball

2019/06/14 09:21 編集

これ、実行している端末はXS MaxかXRですかね?
sena14

2019/06/14 09:22

xrのシミュレータです。
fuzzball

2019/06/14 09:25

それだと下端には表示されているはずですよね。(セーフエリア外なのでアレですが‥) AdView自体が表示されていることは確認しているのでしょうか?
sena14

2019/06/14 14:27

色を変えてみてAdViewの部分の色が変わっていることが確認できているので表示できているという認識でいます。
fuzzball

2019/06/18 00:07

AdViewの座標を画面中央辺りに変更してどうなるか試してみて下さい。 あと、viewDidAppearの中に print(bannerView) を追加して出力を教えて下さい。
sena14

2019/06/19 09:52

中心あたりに配置したところAdViewのbannerViewの表示が確認できました。 位置的にAdViewの下に表示されました。 何が原因なのでしょうか? printの結果これであってますかね? Optional(<GADBannerView: 0x7ff18441a370; frame = (0 821.25; 414 50); clipsToBounds = YES; layer = <CALayer: 0x60000295ca20>>)
fuzzball

2019/06/19 16:29 編集

viewDidLayoutSubviewsに bannerView.center = AdView.center を追加(というか移動)してみて下さい。
guest

回答2

0

ベストアンサー

よく見たら、

swift

1bannerView.frame.size = CGSize(width:self.view.frame.width, height:bannerView.frame.height) 2bannerView.center = AdView.center

この二行おかしいですね。

  • size 高さの設定に自分の高さを使ってる
  • center 座標系の違う座標を使ってる(AdView.centerはself.viewの座標系、bannerView.centerはAdViewの座標系)

ということで、上の二行を下のように変更。

swift

1bannerView.frame = CGRect(origin: .zero, size: CGSize(width: self.view.frame.width, height: AdView.frame.height))

質問のコードのままならこうなのですが、widthもAdViewに合わせていいなら、

swift

1bannerView.frame = CGRect(origin: .zero, size: AdView.frame.size)

これでAdViewにピッタリ重なると思います。

投稿2019/06/20 00:38

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sena14

2019/06/26 07:53

ありがとうございます。 無事表示できました!
guest

0

こんにちは。

AdViewがなんなのか全然わからないので、Viewがどういう状況になっているのか実行時に
View階層を調べてみてください。

参考:
https://qiita.com/akatsuki174/items/45d4bd7cb150defbf116

投稿2019/06/10 01:28

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sena14

2019/06/10 09:07

AdViewは大きさのみを変更したUI View です。 教えていただいたリンクの通りに見てみたところAdViewの下にGADBannerViewが追加されていることは確認できました。 ただレイアウトの方では何も見えない状態です。裏に隠れているなどといったこともなさそうです。GADBannerViewというのをクリックしても特にどこもハイライトされません。 GADBannerViewはself.viewに追加すると広告が表示されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問