iPhone应用程序中的全局ADBannerView

Tom*_*ift 11 iphone uinavigationcontroller iad

是否可以使用标准的UINavigationController-rooted应用程序,在视图层次结构下方的屏幕底部显示单个ADBannerView?也就是说,如果不修改可以推送到根UINavigationController的每个视图控制器/视图,我可以看到全局ADBannerView吗?

我不确定如何在IB或代码中设置它.救命?

我用模糊的答案看到了类似的问题.我正在寻找一个具体的例子.

Tom*_*ift 10

编辑:在iOS5 +中更好的方法是使用视图控制器包含.也就是说,创建一个包含广告和应用程序控制器的根控制器(导航,选项卡等).

我想出了一种方法来做到这一点.这是我做的:

在我的第一次尝试中,我创建了一个名为AdBannerController的新视图控制器.为了它的视图,我创建了一个全屏视图和两个子视图.第一个子视图(contentView)用于常规内容,第二个是AdBannerView.我使用此视图控制器的实例作为与应用程序窗口关联的视图控制器([window addSubview:adBannerController.view]).然后我将我的UINavigationController.view添加为adBannerController.view的子视图:[adBannerController.contentView addSubview:navigationController.view].

除了推送到UINavigationController的viewcontrollers从未调用它们的will/did-load/unload方法之外,这大部分都有效.哪里哪里.我在一些地方读到,这是UINavigationController视图不是应用程序窗口的直接后代的症状.

对于我的第二次尝试,我采用了相同的AdBannerController,并从UINavigationController派生出来.这次,我在loadView中执行了以下操作:

- (void)loadView
{
    [super loadView];

    _contentView = [self.view retain];

    self.view = [[[UIView alloc] initWithFrame: _contentView.frame] autorelease];

    [self.view addSubview: _contentView];

    _adView = [[ADBannerView alloc] initWithFrame: CGRectMake(0, _contentView.bounds.size.height, 320, 50)];
    _adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    _adView.delegate = self;

    [self.view addSubview: _adView]; 

    /* for visual debugging of view layout
    [[_mainView layer] setCornerRadius: 6.0];
    [[_mainView layer] setMasksToBounds: YES];
    [[_mainView layer] setBorderWidth: 1.5];
    [[_mainView layer] setBorderColor: [[UIColor grayColor] CGColor]];  
     */
}
Run Code Online (Sandbox Code Playgroud)

请注意发生了什么 - 我让超类UINavigationController构建其常规"内容"视图,但我将其交换出来并将其替换为我自己的视图,该视图是内容和广告视图的容器.

这非常有效.我也在使用three20,并且需要一些东西来完成这个设置,但也不是太糟糕.

我希望这可以帮助别人!