我有一个包含UITableView的视图。我想在桌子上方展示一个iAd。我认为最好的方法是将表格的contentInset设置为iAd横幅的高度 - 到目前为止一切都很好。
该应用支持轮换,因此我有以下代码:
- (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似乎没有被更改,实际上每次旋转设备时它似乎都被设置为'反向&# 39;值
但它有效 - 因为如果我尝试滚动表格,一切都会跳到原位。
经过多次阅读,我在上面的代码末尾添加了以下行:
[mainTable scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:NO];
这很有效! - 但是 - 我不希望每次旋转设备时桌子都滚回到顶部,所以我尝试了这个:
[mainTable scrollRectToVisible:CGRectMake(mainTable.contentOffset.y+bannerHeight, 0, 10, 10) animated:NO];
但是,如果我不在桌子的顶端,则会再次出现原始问题,因为当前部分的标题(它是一个普通的表格)大约是20像素太高或太低,已修复立即通过手动滚动。
所以现在我迷失了 - 任何想法?
答案 0 :(得分:0)
您可能希望使用UIViewController而不是UITableViewcontroller并以编程方式添加UITableView。然后,您可以轻松设置广告的框架和tableview。旋转时,使用旋转方法再次更改帧!