首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将广告视图添加到UISplitviewController

问如何将广告视图添加到UISplitviewController
EN

Stack Overflow用户
提问于 2011-01-19 19:17:14
回答 4查看 2K关注 0票数 2

我用UISplitViewController做了一个ipad应用程序,它可以在两个方向上运行。现在我想将横幅添加到此应用程序中。我该怎么做呢?在界面生成器中,我只能在detailView中添加一个竖屏横幅,这或多或少是有效的,但是当我转动iPad并点击横幅时,它会在竖屏模式而不是横屏模式下打开。而且横幅永远不能达到ipad横屏模式的规定宽度。

尝试通过编程来实现,它告诉我adbannerview的父对象应该是一个UIViewController。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-11 23:38:41

同样的问题让我抓狂了很长时间,直到我找到了iAdSuite样本。因此,扩展一下Erran的答案:使用苹果公司的iAdSuite示例代码。

使用故事板为自己创建一个可用的拆分视图应用程序。

包括iAd框架。

将BannerViewController.h和.m文件复制到您的应用程序。然后,在AppDelegate.m的“应用程序didFinishLaunching”中,复制iAdSuite的AppDelegate中的行,如下所示:

代码语言:javascript
复制
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
    UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
    splitViewController.delegate = (id)navigationController.topViewController;
    UINavigationController *masterNavigationController = splitViewController.viewControllers[0];

    _bannerViewController = [[BannerViewController alloc] initWithContentViewController:splitViewController];

在iPhone的部分中,您需要以下行:

代码语言:javascript
复制
_bannerViewController = [[BannerViewController alloc] initWithContentViewController:navigationController];

在return语句之前添加以下内容

代码语言:javascript
复制
self.window.rootViewController = _bannerViewController;

将此代码添加到.m的顶部

代码语言:javascript
复制
@implementation AppDelegate{
BannerViewController *_bannerViewController;}

#import "BannerViewController.h"

或者以您喜欢的任何方式创建bannerViewController属性。

对.h进行如下修改:

代码语言:javascript
复制
#import <UIKit/UIKit.h> 
@class BannerViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>

这足以让一切正常工作。现在,整个拆分视图应用程序都在BannerView中运行。它处理所有的AdBannerDelegate函数。

祝你好运:-)

票数 2
EN

Stack Overflow用户

发布于 2012-06-07 13:16:44

在苹果公司的示例代码中,有一个拆分视图控制器iAd实现,您可以轻松地将其添加到应用程序中。:^)

票数 2
EN

Stack Overflow用户

发布于 2012-07-16 12:21:25

我对@ipwnstuff的回答做了进一步的阐述。

第一个警告: iAd只允许以“纵向”或“横向”方式显示,而在iPad上,这意味着分别是768x66或1024x66。这意味着不可能仅将ADBannerView限制为UISplitViewController细节视图,除非您想滚动自己的视图,该视图具有稍微宽一点的视图(因此稍微窄一点的masterViewController视图。我想坚持使用故事板,所以我不想走这条路。

第二个警告,iAdSuite stuff @ipwnstuff并不是立即友好的故事板。它以编程方式创建UISplitViewController,您必须通过.XIB或以编程方式提供主要信息和详细信息。因为我有一个可以工作的故事板,我想把iAds集成到其中,所以我想扩展它。此外,iAdSuite解决方案不会隐藏纵向模式下的主视图,我仍然希望如此。

所以…启动现有的iPad.storyboard文件,然后与iAdSuite中的SplitBanner示例集成,如下所示:

代码语言:javascript
复制
    UISplitViewController *splitViewController = (id)self.window.rootViewController;
    splitViewController.delegate = (id)splitViewController.detailUIViewController;
    CGRect splitViewFrame = splitViewController.view.frame;
        splitViewFrame.origin.y -= application.statusBarFrame.size.height;
        splitViewFrame.size.height += application.statusBarFrame.size.height;
    splitViewController.view.frame = splitViewFrame;

    // initWithContentViewController: the thing that's in the iAdSuite SplitViewBanner example
    self.bannerViewController
      = [[BannerViewController alloc] initWithContentViewController:splitViewController];
    self.window.rootViewController = self.bannerViewController;

因此,我能够使用故事板UISplitViewController作为iAdSuite提供的BannerViewController的childViewController。

好的,第三个警告:有一个小故障,那就是如果你通过splitViewControllerDelegate设置了正常的条形按钮设置,如果你在广告期间旋转,代理将不会被调用,所以按钮将在它不应该出现或不出现的时候临时出现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4734578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档