1

AUIViewController 带有导航栏、工具栏和 admob 横幅。下面是UITableView通过删除 admob 横幅、导航栏和工具栏的高度来计算高度的代码。

UITableview如果在 iPhone 5 和 4 英寸模拟器显示器上运行,高度是可以的。但如果是3.5英寸且非retina显示屏,则UITableView无法滚动到底部。

无论是 4 英寸、3.5 英寸还是非视网膜显示器,高度(self.view.bounds)都是一样的,都是 548。单元格高度是 41。

对于 3.5 英寸和非 Retina 显示器,如果我在移除 admob 横幅、导航栏和工具栏高度的高度后减去 88(导航栏高度和工具栏高度)。然后 UITableView 滚动确定。但对于 4 英寸的显示器来说,这并不好。

任何评论都有帮助,谢谢。

- (void)viewDidLoad{    
    // admob banner     
    bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];    
    bannerView_.rootViewController = self;    
    [self.view addSubview:bannerView_];    

    // uitableview    
    CGRect rect = self.view.bounds;    
    rect.origin.y = bannerView_.frame.size.height;        
    rect.size.height = rect.size.height - bannerView_.frame.size.height
                                        - (self.navigationController.toolbar.frame.size.height)
                                        - (self.navigationController.navigationBar.frame.size.height);

    myTableView = [[UITableView alloc] initWithFrame:rect style:UITableViewStylePlain];    
    [self.view addSubview:myTableView];    
}    
4

3 回答 3

3

尝试以编程方式调整您的UITableViewAutoresizing 属性。

像这样的东西

myTableView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;

更新

使用它来确定您的屏幕尺寸并以编程方式设置您的 UITableView 框架高度。(请记住,您需要从表格视图高度减少(20),因为您有工具栏)

- (BOOL)hasFourInchDisplay {
    return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568.0);
}
于 2013-06-19T17:12:27.573 回答
0

是否self.view.bounds在不同的设备上进行了适当的更改?如果没有,无论您在哪里设置整体视图的大小都需要更改。

此外,大部分逻辑应该在viewWillLayoutSubviews而不是viewDidLoad,因为视图在加载后可能会调整大小。

于 2013-06-19T17:41:06.757 回答
0

这应该工作:

 rect.size.height = self.view.frame.size.height - bannerView_.frame.size.height
                                        - (self.navigationController.toolbar.frame.size.height)
                                        - (self.navigationController.navigationBar.frame.size.height)-20;

//20为状态栏

于 2013-06-19T19:00:16.297 回答