I would like to treat ADInterstitialAd
s as a regular UIView's to gain some flexibility in their usage.
For example, the default interstitial transition is slide up from the bottom of the screen
. I don't like that. Is it possible to modify the alpha value to be 0 at first and than change it to 1?
Another example is having different UIView in front of the fullscreen add for a small amount of time, namely just during transition process of the ADInterstitialAd
? ADInterstitialAd
s tend to be the topmost view in view hierarchies. I imagine I could do this if I manage to treat ADInterstitialAd
s as a regular UIView. Any suggestions on how to achieve this?
You could just animate the alpha value of your AdBannerView
to achieve the effect you want:
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
}
}
Here is another way you can present bannerView. You can remove the view on top of the ad when it has finished sliding up:
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
}
}
EDIT:
As for ADInterstitialAd
s, those seem to inherit from NSObject
and have explicit methods you need to call in order to present them (presentInView:
and presentFromViewController:
). Therefore, there is no public API to control how these ads are presented (This is likely done on purpose so that Apple can guarantee that the ad is shown to the user).
I have no experience with this but looking at the documentation you should be able to create your own view, use presentInView:
, and perform whatever animation you want on that view.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With