2011-01-19 74 views
2

我使用UISplitViewController製作了一個ipad應用程序,該應用程序在兩個方向都起作用。現在我想爲此應用程序添加橫幅。我該怎麼做呢?在界面生成器中,我只能將一個portait橫幅添加到detailView中,該功能或多或少起作用,但是當我打開iPad並單擊橫幅時,它將以縱向模式而不是橫向模式打開。橫幅無法獲得ipad-landscape模式的指定寬度。如何將adbannerview添加到UISplitviewController

試圖以編程的方式做到這一點,它告訴我,adbannerview的父應該是一個UIViewController。

回答

2

這同樣的問題讓我年復一年,直到找到iAdSuite示例。因此,要擴展Erran的答案:使用Apple的iAdSuite示例代碼。

使用故事板爲自己創建一個可運行的拆分視圖應用程序。

包含iAd框架。

將BannerViewController.h和.m文件複製到您的應用程序。然後在AppDelegate中。米的「應用didFinishLaunching」複製從iAdSuite的AppDelegate中的線按最後一行的位置:

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的部分,你需要這個行:

就在
_bannerViewController = [[BannerViewController alloc] initWithContentViewController:navigationController]; 

return語句添加此

self.window.rootViewController = _bannerViewController; 

在.M的頂部添加此

@implementation AppDelegate{ 
BannerViewController *_bannerViewController;} 

#import "BannerViewController.h" 

或以任何您喜歡的方式創建bannerViewController屬性。

修改.H如下:

#import <UIKit/UIKit.h> 
@class BannerViewController; 
@interface AppDelegate : UIResponder <UIApplicationDelegate> 

這是足以讓所有的工作。整個分割視圖應用程序現在在BannerView中運行。這處理所有AdBannerDelegate函數。

祝你好運:-)

+0

工作完美,謝謝。 – zic10 2014-09-15 01:05:53

0

起初它看起來有點像忘記取消註釋或實現shouldAutorotateToInterfaceOrientation變量......但我不太確定。當你點擊橫幅時會發生什麼?它會打開一個新的視圖和一個UIWebView什麼的?或者是其他東西?當我們現在談論廣告橫幅時,您應該考慮實施Apples iAd Service。

+0

是的,我們在這裏談論iAds。我確實實施了shouldAutorotateToInterfaceOrientation。主要的問題是橫向的唯一視圖佔據了整個屏幕,這是拆分視圖,並且此視圖不能添加橫幅。橫幅打開一個新的視圖(我認爲這是一個UIBannerView,至少是一個你通常無法達到的類)。 – 2011-01-21 07:18:00

2

iAdSuite蘋果示例代碼中有一個可以輕鬆添加到應用程序中的分割視圖控制器iAd實現。 :^)

1

我已經@ @ ipwnstuff的答案更進一步。第一個警告:iAd只允許您在「縱向」或「橫向」中顯示,並且在iPad上,這分別意味着768x66或1024x66。這意味着不可能將ADBannerView僅限制在UISplitViewController細節視圖中,除非您想要展開一個具有更寬視圖的視圖(因此稍微窄一些的masterViewController視圖,我想堅持使用storyboard,所以我不想

第二個警告,iAdSuite東西@ipwnstuff指向不是立即故事板友好。它以編程方式創建UISplitViewController,並且您必須通過.XIB或編程方式提供主和細節。工作故事板,我想集成iAds,我想擴展它,而且,iAdSuite解決方案不會隱藏縱向模式下的主視圖,我仍然希望這樣做。所以...啓動現有iPad.storyboard文件,然後與SplitBanner樣品與iAdSuite積分如下:

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設置了正常的bar-button設置,那麼如果你在廣告期間旋轉,委託將不會被調用,所以按鈕會暫時當它不應該或不應該出現的時候出現。

+0

我想通過蘋果在iAdSuite中顯示iView在splitViewController中。但我正在使用故事板。您的解釋忽略了在splitviewcontroller中將iAd與故事板集成爲橫向模式的方式。你能幫我解決這個問題嗎? – 2013-06-20 18:46:03

相關問題