簡體   English   中英

UITableViewController下面的ADBannerView

[英]ADBannerView below UITableViewController

我想將iAd橫幅廣告整合到UItableViewController中的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
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM