[英]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 中):
有几个解决方案。
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 添加一个填充的页脚:
选择您拥有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.