2

我有一个推送 TabBarViewController 的 ViewController。在那个 TabBar 视图控制器中,我有 4 个选项卡。其中两个标签栏是 UITableViewControllers,另外两个是 ViewControllers。第一个选项卡是一个表格视图控制器,工作正常,即没有被导航栏隐藏。第三个选项卡是另一个 TableViewController,被导航栏部分覆盖。第一部分和第一个单元格隐藏在导航栏下方。过去有没有人遇到过这个问题,或者有没有人知道解决这个问题的方法?我尝试了一些方法,例如手动调整帧大小

self.tableView.frame = CGRectMake(10,10,self.view.bounds.size.width -20, self.view.bounds.size.height-20);

那似乎不起作用。我也尝试了 AutoLayout,但没有奏效。我不知道还能做什么。任何人都对如何解决这个问题有任何建议或想法。

编辑:我试过了,edgesForExtendedLayout但它使我的导航栏颜色变深。它使导航栏中的颜色变化动画化,有点像加载栏。

注意:这只发生在 ios7 中。我只是在 iOS 6.1 中模拟它,导航栏根本没有覆盖表格视图控制器,这对我来说很奇怪。有人有什么建议吗?

编辑#2:注意到这是一个 iOS 7 > 问题我做了以下但现在导航栏的颜色变成了更深的颜色。

if([[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue] >= 7)
    {
        if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        {
            self.edgesForExtendedLayout = UIRectEdgeNone;
            self.extendedLayoutIncludesOpaqueBars = YES;
            self.automaticallyAdjustsScrollViewInsets = NO;
        }
    }
4

2 回答 2

2

在与标签使用关联的 UITableViewController 的 viewDidLoad 方法中(假设它加载了对 tabBarController 的调用)

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.tableView.contentInset = UIEdgeInsetsMake(0., 0., CGRectGetHeight(self.tabBarController.tabBar.frame), 0);
}
于 2013-10-14T18:47:30.940 回答
1

我用以下方法解决了这个问题:

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
    viewcontroller.edgesForExtendedLayout = UIRectEdgeNone;
    viewcontroller.extendedLayoutIncludesOpaqueBars = NO;
    viewcontroller.automaticallyAdjustsScrollViewInsets = NO;
}
于 2013-10-14T18:54:20.223 回答