2012-02-16 72 views
0

我有一个包含UITableView的视图。在桌子上方,我想显示一个iAd。我认为最好的办法是将表格的contentInset设置为iAd横幅的高度 - 这一切都很好。每次setContentInset没有正确更新旋转UITableView

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration { 

    NSString *bannerSize = (UIInterfaceOrientationIsPortrait(interfaceOrientation)) ? ADBannerContentSizeIdentifierPortrait : ADBannerContentSizeIdentifierLandscape; 
    int bannerHeight = [ADBannerView sizeFromBannerContentSizeIdentifier:bannerSize].height+1; 

    iAdBanner.currentContentSizeIdentifier = bannerSize; 
    [mainTable setContentInset:UIEdgeInsetsMake(bannerHeight, 0, 0, 0)];  
} 

这部作品的第一旋转,但是当我旋转回来,contentInset不会出现已经改变,事实上:

的应用程序支持旋转,所以我有这样的代码我旋转设备,它似乎设置为'反向'值

但它工作 - 如果我试图滚动表,一切都跳转到位。

大量的阅读之后,我添加了以下行以上代码的末尾:

[mainTable scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:NO]; 

这个工作! - 但是 - 我不希望表背面顶部的旋转设备每次滚动,所以我想这:

[mainTable scrollRectToVisible:CGRectMake(mainTable.contentOffset.y+bannerHeight, 0, 10, 10) animated:NO]; 

但是,如果我不是在表中的原始问题的顶部重新出现,因为当前部分的头部(这是一个普通表格)大约20像素太高或太低,通过手动滚动立即修复。

所以现在我迷路了 - 有什么想法?

回答

0

你可能会想使用UIViewController而不是UITableViewcontroller并以编程方式添加UITableView。然后,您可以轻松设置广告和桌面视图的框架。当旋转时,使用旋转方法再次更改框架!

+0

但是广告将滚动屏幕 - 是吗? – 2012-02-16 15:15:09

+0

好的,你不想那么做,请再次检查我的答案,然后,我已经编辑它。 – 2012-02-22 15:54:46

+0

最后,这是我做的 - 或多或少 - UIView在IB中包含UITableView,并以编程方式添加了ADBannerView - 容器视图的唯一真正原因是跟踪可用的总空间 – 2012-02-22 21:29:02