【发布时间】:2015-11-12 04:45:23
【问题描述】:
我有一个中等大小的 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 的属性或其他错误链接,但没有错误所以我不知道。此外,我不明白为什么自动约束只会将垂直和水平中心弄乱,但是解决任何一个问题都会对我有所帮助。
谢谢。
【问题讨论】:
-
我也意识到要居中它必须是高度和宽度除以 2,但这部分无关紧要,因为无论我卡在那里,位置都将保持不变。
标签: ios swift constraints iad cgrect