【问题标题】:Resizing UITableView When Displaying AdWhirl Ads Across Multiple Views跨多个视图显示 AdWhirl 广告时调整 UITableView 的大小
【发布时间】:2011-11-07 03:00:24
【问题描述】:

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

在...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...

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

我尝试将 UITableView 的 Nib 文件中的 autosize 属性更改为在底部有一个可变间隔,并使用以下代码将 AdWhirl 实例添加到视图中:

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

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

【问题讨论】:

    标签: iphone cocoa-touch uitableview adwhirl autosize


    【解决方案1】:

    我认为您必须创建一个带有嵌入式 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;
    

    【讨论】:

    • 好的,所以我将 UITableView 作为 UIView 的子视图,我发现当我有广告时需要手动调整这些 tableView 的大小。但是我如何知道 AdWhirl 何时显示广告以便调整 tableView 的大小?
    • 我想出了如何做到这一点。基本上,在 ViewWillAppear 中,我添加了行 myDelegate.awView.delegate = self;这让我可以监听 AdWhirl 发送的适当委托事件。相关的是 adWhirlDidReceiveAd 和 adWhirlDidFailToReceiveAd。还有一个 BOOL adExists 可以在视图首次出现时用于确定广告是否已在显示。然后,我可以按照上述方式为广告制作动画。
    • 太好了,我从没用过 AdWhirl。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多