繁体   English   中英

标签栏覆盖 UITableView 的最后一个单元格

[英]Tab bar covers UITableView's last cell

我正在开发基于选项卡栏应用程序预设的应用程序。 在其中一个选项卡中,我有一个显示大量数据的表格视图,但是当我滚动到底部时,表格视图中最后一个单元格的一半被选项卡栏覆盖。

有人对此有解决方案吗?

添加页脚空间对我有用:

//this prevent the tabbar to cover the tableview space
UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 90)];
footer.backgroundColor = [UIColor clearColor];
myTableView.tableFooterView = footer;

这在这里起到了作用(在 Interface Builder 中):

TabBar 上方的 TableView

有几个解决方案。

1.) 假设您使用的是半透明工具栏,则必须使工具栏不透明。

2.) 如果您使用 StoryBoard 并且将 TableView 放入 ViewController 中,假设它是 ViewController 而不是 TableViewController。

3.) 您可以手动添加填充/间距。

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.extendedLayoutIncludesOpaqueBars = YES;
    self.automaticallyAdjustsScrollViewInsets = NO;
}

要么

UIEdgeInsets insets = UIEdgeInsetsMake (0,sizeOfTableView - sizeOfTabBar, 0, 0);
self.tableView.contentInset = inset;
self.tableView.scrollIndicatorInsets = inset;

希望这有助于编码快乐!

查看标签栏的大小,并相应地调整表格视图的大小。 阅读有关 frame 属性的文档,如果您为此目的使用 IB 等,IB 允许您设置事物的大小。

斯威夫特 3:

这对我来说非常有效。 此代码不仅停止显示标签栏后面的最后一个单元格,而且还向上推滚动指示器。 将代码放入您的viewDidLoad()

if let bottomInset = navigationController?.tabBarController?.tabBar.frame.size.height {
    tableView.contentInset.bottom = bottomInset
    tableView.scrollIndicatorInsets.bottom = bottomInset
}

或者你可以这样做:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    tableView.contentInset.bottom = view.safeAreaInsets.bottom
    tableView.scrollIndicatorInsets.bottom = view.safeAreaInsets.bottom
}

真实答案:

我遇到了这个问题,最后来到这里......所以即使这是旧的,这也是我解决这个问题的方法:

我有一个 UITabBar 控制器,其中一个选项卡是一个 UIViewController,它有一个添加的行:

[self.view addSubview:navController.view];

这是错误的..即使代码有效,这个概念也是错误的(至少在我的情况下),navController 应该作为选项卡之一直接链接到 UITabBar 中......

那么,真正的答案是什么?

您一定是错误地实现了导航控制器。 正如我所解释的那样,证明我有这个问题,还有这个人......

我刚刚通过添加常量解决了这个问题......硬编码......找到适合你的阈值怎么样?

我发现唯一的解决方案是为 tableview 添加一个填充的页脚:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/18180-resizing-uitableview-programatically.html

选择您拥有tableview的视图,打开属性检查器,在Simulated Metrics部分中,为 Bottom Bar 项目选择Tab Bar

然后XCode会更新您的视图,为TabBar保留空间。 所以你的tableview不会被覆盖。

对我来说,只是 UIViewController 中的表视图没有任何约束,一旦我固定到视图的边缘,它就会自行修复。

迅速

我一直遇到这个问题,当我将 UITableViewController 嵌入 UITabBarController 时,最后一个单元格(或底部或大单元格)在完全向下滚动时将保留在 TabBar 下方。 在尝试了一天的各种代码和变通方法但都不起作用之后,我只是将我的 UITableViewController 重新嵌入到导航控制器中,然后将其嵌入到 TabBar 控制器中。 间距是固定的,表格视图现在清除 tabBar。

我认为您有一个自定义 Tabbar,您需要将 Tabbar 的高度重置为等于此 Tabbar 背景图像的高度。

UITabBar * tabbar = self.tabBar ; 
[tabbar setBackgroundImage:[UIImage imageNamed:@"image.png"]] ; 
[tabbar setFrame:CGRectMake(0, 480 - imageHeight, 320, imageHeight)];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM