2015-04-04 2 views
1

Я хочу интегрировать баннер iAd под таблицейView в UItableViewController. цель состоит в том, чтобы изменить размер таблицы и добавить в нижней части UIViewController, UITableViewController в этом случае. Я начал рассматривать, что adBannerView является UIView, поэтому я написал код ниже и для UIView, и это сработало, но когда я пытаюсь сделать то же самое, заменив его на ADBannerView, этого не произойдет. ADBanner появился в правильном положении, но изменение размера таблицы изменилось.ADBannerView ниже UITableViewController

может кто-нибудь попытаться понять, почему и помочь мне найти лучшее решение. возможно ли это без использования 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) 
     } 

    } 

} 

ответ

4

Если все, что вам нужно, это баннер в нижней части 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 
    } 

} 
+0

спасибо. действительно ценят, когда 1 строка кода заменяет ... ну, я не хочу их подсчитывать ... – tylyo

Смежные вопросы