在多个视图中显示AdWhirl广告时调整UITableView的大小

时间:2011-11-07 03:00:25

标签: iphone cocoa-touch uitableview adwhirl autosize

我正在尝试使用AppDelegate单例将AdWhirl集成到我的iPhone应用程序中,因此我可以在多个视图中使用相同的AdWhirl实例,但无法弄清楚如何在这些视图中调整表的大小。我正在使用的代码是:

in ... AppDelegate.h:

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

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

...

@property (nonatomic, retain) AdWhirlView *awView;

in ... AppDelegate.m didFinishLaunchingWithOptions:

awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];

也在... AppDelegate.m我添加了必需的委托方法

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

此代码允许我在多个视图中显示相同的广告,但我无法弄清楚如何在显示广告时调整UITableView的大小以将其高度更改为更短,以便UITableView如果没有则显示全高广告,如果屏幕底部有广告,则会调整大小。我将UITableView作为UIViewController的子视图,名为myMainView。

我尝试更改Nib文件中的自动调整大小属性,以便UITableView在底部有一个变量spacer,并使用以下代码将AdWhirl实例添加到视图中:

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

这会在屏幕底部的正确位置显示广告,但UITableView未调整大小。我该怎么做?

1 个答案:

答案 0 :(得分: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;