带有导航栏,工具栏和admob横幅的UIViewController
。下面是通过删除admob横幅,导航栏和工具栏的高度来计算UITableView
高度的代码。
如果在iPhone 5和4英寸模拟器显示器上运行,UITableview
高度就可以了。
但如果3.5英寸和非视网膜显示,UITableView
的底部无法滚动到。
无论是4英寸,3.5英寸和非视网膜显示屏,高度(self.view.bounds)都是相同的,548。细胞高度为41.
对于3.5英寸和非视网膜显示器,如果在删除了admob横幅,导航栏和工具栏高度的高度后减去88(导航栏高度和工具栏高度)。然后UITableView滚动OK。但对于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];
}
答案 0 :(得分:3)
尝试以编程方式调整UITableView
自动调整属性。
类似这样的事情
myTableView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;
<强>更新强>
使用它来确定您的屏幕大小并以编程方式设置您的UITableView框架高度。(请记住,您需要从表视图高度减少(20),因为您有工具栏)
- (BOOL)hasFourInchDisplay {
return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568.0);
}
答案 1 :(得分:0)
self.view.bounds
是否在不同的设备上进行了适当的更改?如果没有,无论您在何处设置整体视图的大小都需要更改。
此外,大多数此逻辑应位于viewWillLayoutSubviews
而不是viewDidLoad
,因为视图可能会在加载后调整大小。
答案 2 :(得分: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状态栏