插页式广告的 iAd 自定义过渡

iAd custom transition for interstitial ads

我想将 ADInterstitialAds 视为常规 UIView,以便在使用时获得一些灵活性。

例如,默认的插页式过渡是slide up from the bottom of the screen。我不喜欢那样。是否可以先将 alpha 值修改为 0,然后再将其更改为 1?

另一个例子是在全屏前添加不同的 UIView 一小段时间,即只是在 ADInterstitialAd 的过渡过程中? ADInterstitialAds 往往是视图层次结构中最顶层的视图。我想如果我设法将 ADInterstitialAds 视为常规 UIView,我可以做到这一点。关于如何实现这一点有什么建议吗?

您可以只设置 AdBannerView 的 alpha 值的动画来达到您想要的效果:

import iAd

private var bannerView: AdBannerView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Create your banner view however you want, and add it to your UI.
    bannerView = AdBannerView()
    bannerView.alpha = 0
    addSubview(bannerView)
}

// When you want to show the ad, animate the alpha.
private func animateInAd(appearing: Bool) {
    UIView.animateWithDuration(1.0) [weak self] {
        self?.bannerView.alpha = appearing ? 1 : 0
    }
}

这是您可以展示 bannerView 的另一种方式。您可以在广告向上滑动完成后移除其顶部的视图:

import iAd

private var coverView: UIView!
private var bannerView: AdBannerView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Create your banner view however you want, and add it to your UI.
    bannerView = AdBannerView()   
    addSubview(bannerView)

    // Create the cover view however you want, and add it above the banner view.
    coverView = UIView()
    addSubview(coverView)
}

private func animateInAd(appearing: Bool) {
    let hideAdPosition = view.frame.size.height        
    let showAdPosition = hideAdPosition - bannerView.frame.size.height

    UIView.animateWithDuration(1.0, animations: [weak self] {
        self?.bannerView.frame.origin.y = appearing ? showAdPosition : hideAdPosition
    }) { [weak self] success in
        self?.animateCover(appearing: !appearing)
    }
}

private func animateCover(appearing: Bool) {
    UIView.animateWithDuration(1.0) [weak self] {
        self?.coverView.alpha = appearing ? 1 : 0
    }
}

编辑:

至于 ADInterstitialAd,它们似乎是从 NSObject 继承的,并且有显式方法需要调用才能显示它们(presentInView:presentFromViewController:) .因此,没有 public API 来控制这些广告的呈现方式(这很可能是故意的,以便 Apple 可以保证向用户展示广告)。

我没有这方面的经验,但看看 documentation 你应该能够创建自己的视图,使用 presentInView:,并在该视图上执行你想要的任何动画。