-
Notifications
You must be signed in to change notification settings - Fork 16
Banner_Ad_iOS_expand
AdGeneration edited this page Aug 21, 2018
·
5 revisions
開発環境にXcodeを使用することを前提とします。
本項ではAd Generation SDKにおいて320×50のサイズのバナー広告を端末幅いっぱいに拡大して表示させる方法を示します。
この方法では、バナー広告のアスペクト比を変えず端末幅まで幅と高さを等倍率で拡大させます。
端末サイズにより高さが可変となりますので、それらを考慮した画面実装が必要になります。
(Swiftの例のみ記載しています)
以下はバナー広告のサイズを計算するUIViewを拡張したクラスの実装例です。
class BannerAdContainerView: UIView {
private(set) var expandRate: Float = 1.0
private let MIN_WIDTH: CGFloat = 320
private let MAX_WIDTH: CGFloat = 414
override func updateConstraints() {
super.updateConstraints()
let widthConstraint = self.constraints.first{ $0.firstAttribute == NSLayoutAttribute.width }
let heightConstraint = self.constraints.first{ $0.firstAttribute == NSLayoutAttribute.height }
guard let wConstraint = widthConstraint, let hConstraint = heightConstraint else {
return
}
let screenWidth = UIScreen.main.bounds.size.width
if (screenWidth < MIN_WIDTH || screenWidth > MAX_WIDTH) {
return
}
let expandRate = screenWidth / wConstraint.constant
let height = hConstraint.constant * expandRate
widthConstraint?.constant = screenWidth
heightConstraint?.constant = height
self.expandRate = Float(expandRate)
}
}
バナー広告を配置するBannerAdContainerViewを端末幅いっぱいになるようAutoLayoutの設定をしてください。
adType
をFreeに設定し、adSize
で渡す幅と高さ、及びadScale
に比率を設定してください。
class ViewController: UIViewController {
@IBOutlet weak var bannerAdContainerView: BannerAdContainerView! {
didSet {
// 広告リクエストより前にframeを更新してください
self.bannerAdContainerView.layoutIfNeeded()
}
}
private var adgManagerViewController: ADGManagerViewController?
override func viewDidLoad() {
super.viewDidLoad()
adgManagerViewController = ADGManagerViewController(locationID: "48547", adType: .adType_Free, rootViewController: self)
adgManagerViewController?.addAdContainerView(bannerAdContainerView)
adgManagerViewController?.adSize = CGSize(width: bannerAdContainerView.frame.width, height: bannerAdContainerView.frame.height)
adgManagerViewController?.adScale = bannerAdContainerView.expandRate
adgManagerViewController?.delegate = self
adgManagerViewController?.loadRequest()
}
}
アドネットワーク事業者の配信する広告クリエイティブによっては、こちらの方法でも正しく拡大が行えなえず、実装上では制御できない可能性がございます。
以下は拡大表示の確認ができているアドネットワークです。
- ADPRESSO
- GunosyAds
- i-Mobile
- nend
- tapone
- Zucks