【发布时间】:2011-03-28 15:35:09
【问题描述】:
我正在开发一个基于 Tab Bar 应用程序预设的应用程序。在其中一个选项卡中,我有一个显示大量数据的表格视图,但是当我滚动到底部时,表格视图中最后一个单元格的一半被选项卡栏覆盖。
谁有办法解决这个问题?
【问题讨论】:
标签: iphone uitableview uitabbarcontroller
我正在开发一个基于 Tab Bar 应用程序预设的应用程序。在其中一个选项卡中,我有一个显示大量数据的表格视图,但是当我滚动到底部时,表格视图中最后一个单元格的一半被选项卡栏覆盖。
谁有办法解决这个问题?
【问题讨论】:
标签: iphone uitableview uitabbarcontroller
查看标签栏的大小,并相应地调整表格视图的大小。阅读有关 frame 属性的文档,如果您为此目的使用 IB,IB 允许您设置事物的大小等。
【讨论】:
我发现唯一的解决方案是为 tableview 添加填充页脚:
【讨论】:
我遇到了这个问题,最后到了这里……所以即使这是旧的,我也是这样解决这个问题的:
我有一个 UITabBar 控制器,其中一个选项卡是 UIViewController,并且它添加了一行:
[self.view addSubview:navController.view];
这是错误 ..即使代码有效,但概念是错误的(至少在我的情况下),导航控制器应该直接链接到 UITabBar 作为选项卡之一...
那么,真正的答案是什么?
您一定是错误地实现了导航控制器。正如我所解释的那样,我遇到了这个问题,还有This Guy...
【讨论】:
添加页脚空间对我有用:
//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;
【讨论】:
选择您拥有tableview 的视图,打开属性检查器,在Simulated Metrics 部分中,为底部栏项目选择Tab Bar。
然后XCode 将更新您的视图,为TabBar 保留空间。所以你的tableview 不会被覆盖。
【讨论】:
我想你有一个自定义的 Tabbar,你需要将 Tabbar 的高度重置为这个 Tabbar 的背景图像的高度。
UITabBar * tabbar = self.tabBar ;
[tabbar setBackgroundImage:[UIImage imageNamed:@"image.png"]] ;
[tabbar setFrame:CGRectMake(0, 480 - imageHeight, 320, imageHeight)];
【讨论】:
有几个解决方案。
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;
希望这对您有所帮助并祝您编码愉快!
【讨论】:
这在此处(在 Interface Builder 中)起到了作用:
【讨论】:
对我来说,只是 UIViewController 中的表格视图没有任何约束,一旦我固定到视图的边缘,它就会自行修复。
【讨论】:
我刚刚通过添加常数解决了这个问题...硬编码...找到适合您的阈值怎么样?
【讨论】:
SWIFT
我一直遇到这个问题,当我将 UITableViewController 嵌入到 UITabBarController 中时,当完全向下滚动时,最后一个单元格(或底部或大单元格)将保留在 TabBar 下方。在尝试了一天的各种代码和解决方法都不起作用之后,我只是将我的 UITableViewController 重新嵌入到导航控制器中,导航控制器将它们嵌入到 TabBar 控制器中。间距是固定的,表格视图现在清除 tabBar。
【讨论】:
斯威夫特 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
}
【讨论】: