2011-11-07 42 views
1

我正在嘗試將AdWhirl整合到使用AppDelegate單例的iPhone應用程序中,以便跨多個視圖使用相同的AdWhirl實例,但無法弄清楚如何在這些視圖中調整表的大小。我使用的代碼是:當在多個視圖中顯示AdWhirl廣告時調整UITableView的大小

在... AppDelegate.h:

#import "AdWhirlView.h" 
#import "AdWhirlDelegateProtocol.h" 

@interface ...AppDelegate : NSObject <UIApplicationDelegate, AdWhirlDelegate> 
AdWhirlView *awView; 

... 

@property (nonatomic, retain) AdWhirlView *awView; 

在... AppDelegate.m didFinishLaunchingWithOptions:

awView = [AdWhirlView requestAdWhirlViewWithDelegate:self]; 

也... AppDelegate.m我添加了所需的代理方法

(NSString *)adWhirlApplicationKey... 
(UIViewController *)viewControllerForPresentingModalView... 

此代碼允許我在多個視圖中顯示相同的廣告,但我c請注意如何調整UITableView的大小以便在廣告顯示時將其高度縮短,以便UITableView在沒有廣告時顯示全高,或者在屏幕底部顯示廣告時調整大小。我將UITableView作爲名爲myMainView的UIViewController的子視圖。

我試圖改變在筆尖文件中的自動調整大小屬性的的UITableView有在底部具有可變墊片,和正在加入的AdWhirl實例到視圖,此代碼:

...AppDelegate * myDelegate = (...AppDelegate *)[[UIApplication sharedApplication] delegate]; 
[myDelegate.awView setFrame:CGRectMake(0, 480-20-44-50, 320, 50)]; 
[self.myMainView addSubview: myDelegate.awView]; 

這將顯示廣告在屏幕底部的正確位置,但UITableView沒有調整大小。我應該怎麼做?

回答

0

我認爲你必須創建一個嵌入UITableView的UIView。我試圖做類似的事情,這是我能夠實現它的唯一方式。頂級UITableView自動調整大小以佔用整個屏幕。

只是擴大上,你可能要聲明的東西在你的頭,像這樣:

@interface ExampleClass:UIViewController { 
    UITableView *tableView; 
} 

@property (nonatomic,retain) IBOutlet UITableView *tableView; 

然後在實際執行中,你可以調整該聲明tablview每當你需要做:

CGRect tableFrame = tableView.frame; 
//Decrease the height of table by height of ad banner 
tableFrame.size.height = tableView.frame.size.height - adBannerView.frame.size.height; 

tableView.frame = tableFrame; 
+0

好吧,所以我有UITableView作爲UIView的子視圖,並且我看到我需要在有廣告時手動調整這些tableView的大小。但是,我怎麼知道AdWhirl何時顯示廣告,以便我可以調整tableView的大小? – user955853

+1

我想出瞭如何做到這一點。基本上,在ViewWillAppear中,我添加了myDelegate.awView.delegate = self;這讓我可以監聽AdWhirl發送的相應代理事件。相關的是adWhirlDidReceiveAd和adWhirlDidFailToReceiveAd。還有一個BOOL adExists,可以在視圖第一次出現以確定廣告是否已經顯示時使用。然後,我可以按照上面所述的方式爲廣告製作動畫。 – user955853

+0

太棒了,我從來沒有使用過AdWhirl。 – Norman

相關問題