我有一个中等尺寸的iAd框架(300x250),我想将其居中。首先让我说我将其正确地放置在视图控制器中,运行了模拟器,并且显示没有问题。然后,我添加了自动约束以水平和垂直居中。在情节提要预览中,它起作用了,但是当我在实际的模拟器中运行它时,却找不到广告。我输出了一条成功语句,因此它确实加载了所有内容,但没有出现。消除约束纠正了它。

因此,我尝试以编程方式进行操作。我创建了必要的委托以及所有内容,而我看到的执行代码与其他代码非常相似,所以我不知道为什么这行不通。无论我将CGRect赋予什么价值,广告在任何地方都看起来一样。

代码:

import UIKit
import iAd

class replayAdViewController: UIViewController, ADBannerViewDelegate {

@IBOutlet var bannerView: ADBannerView!



override func viewDidLoad() {
    super.viewDidLoad()

    bannerView!.delegate = self
}

func bannerViewDidLoadAd(banner: ADBannerView!)
{
    println("success, banner loaded")

    var width = self.view.frame.width
    var height = self.view.frame.height

    banner.frame = CGRectMake(width, height, 300, 250)

    self.view.addSubview(banner) //Add banner to view (Ad loaded)
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError
    error: NSError!)
{
        println("failed to load ad, removed")
        println(error)
        //banner.removeFromSuperview() //Remove the banner (No ad)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

我尝试将CGRect语句移出函数,并移至viewDidLoad并使用bannerView.frame等。我猜我在某种程度上将横幅与CGRect的属性或其他内容链接不正确,但是没有错误,所以我不这样做不知道另外,我不明白为什么自动约束仅将其垂直和水平的中心弄乱了,但是解决任何一个问题都会对我有所帮助。

谢谢。

最佳答案

假设您的店铺设置正确,则应将广告放置在didMoveToView中,如下所示:bannerView.center = self.view.center另外,在didFailToReceiveAdWithError中,如果您隐藏横幅:bannerView.hidden = true,效果会更好。您无需使用self.view.addSubview(banner)这一行,因为您已将横幅广告添加到情节提要中的视图中。横幅的大小也可以使用约束在情节提要中设置。

关于ios - 在Swift中以编程方式更改iAd排名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32086101/

10-12 03:07