gpt4 book ai didi

ios - UITableViewController 下面的 ADBannerView

转载 作者:搜寻专家 更新时间:2023-11-01 06:23:20 24 4
gpt4 key购买 nike

我想将 iAd 横幅集成到 UItableViewController 中的 tableView 下方。目标是调整 tableview 的大小并添加到 UIViewController 的底部,在本例中为 UITableViewController。我开始考虑 adBannerView 是一个 UIView,所以我在下面为 UIView 编写了代码,它起作用了,但是当我试图通过用 ADBannerView 替换它来实现同样的事情时,它并没有发生。 ADBanner 出现在正确的位置,但 tableView 的大小调整丢失了。

有人可以尝试理解原因并帮助我找到更好的解决方案。不使用footerView可行吗?

这里是代码。目前是 Utils 类中的静态方法。接下来我会在另一个上下文中使用它,但是你应该很容易自己测试它

class ViewControllerUtils {
class func showBanner<C:UIViewController where C:ADBannerViewDelegate> ( viewController:C) {

println("*** showBanner isLandscape:\(UIDevice.currentDevice().orientation.isLandscape)")

// you don't care about it for the moment.
var bannerHeight:CGFloat = 50.0
if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad{
bannerHeight = 66.0
} else if UIDevice.currentDevice().orientation.isLandscape {
bannerHeight = 32.0
}
println("bannerHeight: \(bannerHeight)")

// created a local variable in order to update the original frame
var viewFrame = viewController.view.frame

UIView.animateWithDuration(1.0, animations: { () -> Void in
println("viewFrame \(viewFrame)")

viewFrame.size.height -= bannerHeight
viewController.view.frame = viewFrame
println("viewFrame \(viewFrame)")

}) { (ended:Bool) -> Void in

var x = CGPoint(x: viewFrame.origin.x, y: viewFrame.origin.y + viewFrame.size.height)
var bannerFrame = CGRect(origin: x, size: CGSize(width: viewFrame.size.width, height: bannerHeight))

var container = UIView(frame: bannerFrame)
container.backgroundColor = UIColor.redColor()

//without this line it works like expected.
//with it tableview resizing is not applied anymore
container.addSubview(ADBannerView(frame: CGRect(origin: CGPointZero, size: CGSize(width: viewFrame.size.width, height: bannerHeight))))

viewController.view.superview?.addSubview(container)
}

}

}

最佳答案

如果您只需要 TableViewController 底部的横幅,您可以只使用预构建的行为,将 canDisplayBannerAds 设置为 true,如下所示:

import UIKit
import iAd

class MainViewController: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

self.canDisplayBannerAds = true
}

}

关于ios - UITableViewController 下面的 ADBannerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29443149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com