在我的故事板中,我有一个视图控制器(嵌入在导航控制器中)。在视图控制器内我有一个标签栏控制器,在一个标签内有一个表格视图控制器。我的问题是表格视图的最后一行位于标签栏控制器的标签栏“下方”。如果我为 iOS 6 构建我的应用程序,则不会发生这种情况。
我该如何解决这个问题?谢谢!
在我的故事板中,我有一个视图控制器(嵌入在导航控制器中)。在视图控制器内我有一个标签栏控制器,在一个标签内有一个表格视图控制器。我的问题是表格视图的最后一行位于标签栏控制器的标签栏“下方”。如果我为 iOS 6 构建我的应用程序,则不会发生这种情况。
我该如何解决这个问题?谢谢!
尝试设置标签栏半透明属性。
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
接受和赞成的答案不适用于我的设置:
UITabBarController -> UINavigationController -> UIViewController -> UITableView
我的应用程序的根视图控制器是UITabBarController
. 每个选项卡都是一个UINavigationController
,并且在一个选项卡中,导航控制器的根是一个UIViewController
以表格视图作为主视图的。
所以这对我有用:当分配初始化 UITableView 时,我计算高度并将其设置在表格视图的框架中。一般公式是screen height - (status bar height + nav bar height + tab bar height)
。
如前所述,这将完美地工作。我刚刚测试过了。
self.tabBar.translucent = NO;
我认为这与automaticallyAdjustsScrollViewInsets
由于视图控制器层次结构的嵌套结构而没有被应用(或正确应用)有关。
尝试将您的表格复制到一个新表格中UIViewController
,并确保UIViewController
已打开身份检查器中名为“Adjust Scroll View Insets”的复选标记。
我有同样的问题,投票的答案并没有解决它。请参阅我对类似问题的回答,Tab Bar 涵盖了 iOS7 中的 TableView 单元格。
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));
}
如果有人找到更好的解决这个问题的方法,请分享!