2016-02-03 10 views
5

Ich würde gerne ADInterstitialAd s als eine regelmäßige UIViews behandeln, um eine gewisse Flexibilität in ihrer Verwendung zu gewinnen.iAd benutzerdefinierte Übergang für Interstitial-Anzeigen

Zum Beispiel ist der standardmäßige interstitielle Übergang slide up from the bottom of the screen. Das mag ich nicht. Ist es möglich, den Alpha-Wert zuerst auf 0 und dann auf 1 zu ändern?

Ein anderes Beispiel ist eine andere UIView vor dem Vollbild hinzufügen für eine kurze Zeit, nämlich nur während des Übergangs der ADInterstitialAd? ADInterstitialAd s neigen dazu, in Ansichtenhierarchien die oberste Ansicht zu sein. Ich stelle mir vor, ich könnte dies tun, wenn es mir gelingt, ADInterstitialAd als eine normale UIView zu behandeln. Irgendwelche Vorschläge, wie man das erreicht?

+0

Nur eine nette Erinnerung, iAD wird von Apple im Juni 2016 geschlossen. – x4snowman

+0

Nun, vielen Dank! War mir dessen nicht bewusst. Und der Ersatz wird von Apple zur Verfügung gestellt werden? – brumbrum

+0

Kein Ersatz hier .. https://developer.apple.com/news/?id=01152016a – x4snowman

Antwort

3

Sie könnten nur den Alpha-Wert Ihrer AdBannerView animieren den Effekt, den Sie erreichen wollen:

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 
    } 
} 

Hier ist eine andere Art und Weise Sie Bannerview präsentieren können. Sie können die Ansicht auf der Anzeige entfernen, wenn es Schiebetüren oben beendet hat:

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:

Was ADInterstitialAd s, die aus NSObject zu erben scheinen und haben explizite Methoden, die Sie aufrufen müssen in Um sie zu präsentieren (presentInView: und presentFromViewController:). Daher gibt es keine öffentliche API, mit der gesteuert werden kann, wie diese Anzeigen geschaltet werden. Dies geschieht wahrscheinlich absichtlich, damit Apple garantieren kann, dass die Anzeige dem Nutzer angezeigt wird.

+0

oh schön. Was ist mit Interstitial? – brumbrum

+0

Können Sie weitere Informationen zum zweiten Szenario bereitstellen? Willst du eine zweite Sicht auf die Banneransicht haben? Und dann wenden Sie einen Alpha-Übergang darauf an? – Mark

+0

Ich habe meine Antwort aktualisiert, um Code für das, was ich glaube, Sie im zweiten Teil Ihrer Frage fragen. – Mark

1

Ich habe keine Erfahrung damit, aber mit Blick auf die documentation sollten Sie in der Lage sein, Ihre eigene Ansicht zu erstellen, verwenden Sie presentInView:, und führen Sie die gewünschte Animation für diese Ansicht.