前回の投稿から少し時間が空いてしまいました。
前回の投稿「[swift]iAdを利用して広告を表示しようとしてunrecognized selector sent to instanceがでたら。」では、単純に以下の一行を追加するだけで、広告の表示まで行ったのですが、残念ながらそれだけでは、既に表示されている項目全体が上に押し上げられてしまいました。
self.canDisplayBannerAds=true
そのため、色々試したのですがどちらにしても、表示される広告のサイズとかをちゃんと把握しないとダメなので、結局この一行だけで広告を表示するという手法断念しました。
結局広告を他のViewと同様に定義し、そのサイズや場所を指定して設定しないとうまく他の表示項目と調整を行うほかないようです。
広告を読み込む以下の関数を作成しました。
class 画面操作型:UIViewController,ADBannerViewDelegate{ var 広告:ADBannerView! var 画面サイズ:CGSize! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. 広告読込() 画面サイズ=CGSizeMake(self.view.frame.size.width,self.view.frame.size.height-広告.frame.size.height) } func 広告読込(){ 広告=ADBannerView(frame:CGRect.zero) 広告.center=CGPoint(x: 広告.center.x , y: view.bounds.size.height-広告.frame.size.height/2) 広告.delegate=self 広告.hidden=false self.view.addSubview(広告) }
メインの画面サイズを広告のサイズを元に調整する為のコードを追加しました。
広告サイズは、画面の回転に応じて広告サイズが変わるため、この画面サイズの設定は、そのたびに呼び出す必要がありました。
そのため、viewDidLayoutSubviewsの中にも同様の設定が必要でした。
override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() 広告.center=CGPoint(x: 広告.center.x,y: view.bounds.size.height - 広告.frame.size.height/2) }
これで、うまく他の画面要素に影響を与えず広告を表示することができました。