9

在我的故事板中,我有一个视图控制器(嵌入在导航控制器中)。在视图控制器内我有一个标签栏控制器,在一个标签内有一个表格视图控制器。我的问题是表格视图的最后一行位于标签栏控制器的标签栏“下方”。如果我为 iOS 6 构建我的应用程序,则不会发生这种情况。

我该如何解决这个问题?谢谢!

4

5 回答 5

19

尝试设置标签栏半透明属性。

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

于 2013-09-26T15:36:07.750 回答
2

接受和赞成的答案不适用于我的设置:

UITabBarController -> UINavigationController -> UIViewController -> UITableView

我的应用程序的根视图控制器是UITabBarController. 每个选项卡都是一个UINavigationController,并且在一个选项卡中,导航控制器的根是一个UIViewController以表格视图作为主视图的。

所以这对我有用:当分配初始化 UITableView 时,我计算高度并将其设置在表格视图的框架中。一般公式是screen height - (status bar height + nav bar height + tab bar height)

于 2013-12-03T10:05:36.110 回答
2

如前所述,这将完美地工作。我刚刚测试过了。

self.tabBar.translucent = NO;
于 2013-10-03T10:19:05.650 回答
1

我认为这与automaticallyAdjustsScrollViewInsets由于视图控制器层次结构的嵌套结构而没有被应用(或正确应用)有关。

尝试将您的表格复制到一个新表格中UIViewController,并确保UIViewController已打开身份检查器中名为“Adjust Scroll View Insets”的复选标记。

于 2013-09-26T19:49:36.707 回答
0

我有同样的问题,投票的答案并没有解决它。请参阅对类似问题的回答,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));
}

如果有人找到更好的解决这个问题的方法,请分享!

于 2014-02-19T03:51:13.807 回答