在我的故事板中,我有一个View控制器(嵌入在导航控制器中)。 在视图控制器内部,我有一个标签栏控制器,在标签内有一个表视图控制器。我的问题是表视图的最后一行位于标签栏控制器的标签栏下面。如果我为iOS 6构建我的应用程序,则不会发生这种情况。
我该如何解决这个问题?谢谢!
答案 0 :(得分:19)
尝试设置tabbar半透明属性。
self.navigationController.navigationBar.translucent= NO; // Set transparency to no and
self.tabBar.translucent= NO; //Set this property so that the tab bar will not be transparent
答案 1 :(得分:2)
如上所述,这将完美地运作。我刚试过它。
self.tabBar.translucent = NO;
答案 2 :(得分:2)
接受和赞成的答案不适用于我的设置:
UITabBarController -> UINavigationController -> UIViewController -> UITableView
我的应用的根视图控制器是UITabBarController
。每个选项卡都是UINavigationController
,在一个选项卡中,导航控制器的根是UIViewController
,其中有一个表视图作为主视图。
所以这对我有用:当alloc-initing UITableView时,我计算高度并将其设置在表视图的框架中。通用公式为screen height - (status bar height + nav bar height + tab bar height)
。
答案 3 :(得分:1)
我认为由于视图控制器层次结构的嵌套结构,它与automaticallyAdjustsScrollViewInsets
未应用(或正确应用)有关。
尝试将您的表格复制到新的UIViewController
,并确保UIViewController
的身份检查器中的“调整滚动视图插图”中的复选标记已打开。
答案 4 :(得分:0)
我遇到了同样的问题,而且投票的答案并没有解决。请参阅my answer类似问题Tab Bar covers TableView cells in iOS7。
我通过在表格视图控制器的viewWillAppear:
方法(由Matt Quiros建议)中手动设置表格视图的框架到屏幕高度来解决问题 - (状态栏高度+导航栏高度+标签栏高度。)
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// Adjust height of tableview (does not resize correctly in iOS 7)
CGRect tableViewFrame = self.tableView.frame;
tableViewFrame.size.height = [self heightForTableView];
self.tableView.frame = tableViewFrame;
}
- (CGFloat)heightForTableView
{
return CGRectGetHeight([[UIScreen mainScreen] bounds]) -
(CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) +
CGRectGetHeight(self.navigationController.navigationBar.frame) +
CGRectGetHeight(self.tabBarController.tabBar.frame));
}
如果有人找到更好的解决方案,请分享!