Luk*_*tin 11 ios iad adbannerview swift
所以我试图在我的应用程序中设置一个简单的iAd横幅,但我在输出中得到这两个警告:
WARNING: More than 10 instances of ADBannerView or ADInterstitialView
currently exist. This is a misuse of the iAd API, and ad performance will
suffer as a result. This message is printed only once.
Run Code Online (Sandbox Code Playgroud)
和
<Error>: CGAffineTransformInvert: singular matrix.
Run Code Online (Sandbox Code Playgroud)
这是我用来实现我的ADBannerView
:
var adBannerView = ADBannerView()
func loadAds() {
adBannerView = ADBannerView(frame: CGRect.zeroRect)
adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height - adBannerView.frame.size.height / 2)
adBannerView.delegate = self
adBannerView.hidden = true
view.addSubview(adBannerView)
}
//BannerView did load ad
func bannerViewDidLoadAd(banner: ADBannerView!) {
adBannerView.hidden = false
}
//BannerView failed to load
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
adBannerView.hidden = true
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
loadAds()
//(rest of the code is from here onwards)
Run Code Online (Sandbox Code Playgroud)
我试着添加这个来阻止第一个错误:(没有用)
//BannerView will disappear
override func viewWillDisappear(animated: Bool) {
adBannerView.removeFromSuperview()
adBannerView.delegate = nil
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*orm 18
问题是每次加载视图时都要创建新的实例ADBannerView
.我们需要做的是ADBannerView
在我们中创建一个AppDelegate.swift
,然后呈现ADBannerView
我们希望拥有iAd横幅的视图.这也称为共享iAd横幅.在这个例子中,我ADBannerView
在my中创建了一个AppDelegate.swift
,然后将它添加到我ViewController.swift
的视图中.
AppDelegate.swift
import UIKit
import iAd // Import iAd
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, ADBannerViewDelegate { // Include the delegate for our banner
var window: UIWindow?
var adBannerView = ADBannerView() // Create our one ADBannerView
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Set delegate and hide banner initially
adBannerView.delegate = self
adBannerView.hidden = true
return true
}
func bannerViewDidLoadAd(banner: ADBannerView!) {
print("bannerViewDidLoadAd")
adBannerView.hidden = false
}
func bannerViewActionDidFinish(banner: ADBannerView!) {
print("bannerViewActionDidFinish")
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
print("didFailToReceiveAdWithError: \(error)")
adBannerView.hidden = true
}
Run Code Online (Sandbox Code Playgroud)
ViewController.swift
import UIKit
class ViewController: UIViewController {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate // Create reference to our app delegate
override func viewWillAppear(animated: Bool) {
// Position
appDelegate.adBannerView.center = CGPoint(x: view.frame.midX,
y: view.frame.height - appDelegate.adBannerView.frame.height / 2)
// Add to view
view.addSubview(appDelegate.adBannerView)
}
Run Code Online (Sandbox Code Playgroud)
不要忘记从viewWillDisappear(animated: Bool)
之前添加的函数中删除代码.如果您单击横幅然后关闭它,将调用此函数并从我们的视图中删除我们的横幅,并将我们的横幅委托设置为nil过早将导致问题.
归档时间: |
|
查看次数: |
2811 次 |
最近记录: |