UITabBar 将隐藏 UITableView 的最后一个单元格
Posted
技术标签:
【中文标题】UITabBar 将隐藏 UITableView 的最后一个单元格【英文标题】:UITabBar will hide the last cell of the UITableView 【发布时间】:2013-11-01 03:16:32 【问题描述】:self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, [UIScreen mainScreen].bounds.size.height ) style:UITableViewStylePlain];
如果我将 tableview 框架更改为
(0.0, 0.0, 320.0, [UIScreen mainScreen].bounds.size.height -49.0)
滚动条会留下空白,我不喜欢它。我该如何解决这个问题?
非常感谢。
【问题讨论】:
Tab bar covers UITableView's last cell 的可能重复项 【参考方案1】:您可以尝试设置该表视图的contentInset
。在 ios 7 中有一个 topLayoutGuide
和 bottomLayoutGuide
(这是你想要的)。在UITabBarController
内部,bottomLayoutGuide
基本上应该给你底栏的高度。
tableView.contentInset = UIEdgeInsetsMake(0, 0, self.bottomLayoutGuide.length, 0);
应该可以解决问题。
【讨论】:
谢谢,tableView.contentInset = UIEdgeInsetsMake(0, 0, 49, 0) 有效! 您可能仍希望避免在此处使用任何幻数。尤其是当您支持设备旋转时。 bottomLayoutGuide 将始终反映您的 UITabBar 的当前高度。 是的,先生,您是对的。现在我正在使用“self.bottomLayoutGuide.length”。 我的 self.bottomLayoutGuide.length 在我登录时返回 0。我该如何解决?谢谢! @jaytrixz 可能为 0,因为尚未发生布局。尝试在控制器的 viewDidLayoutSubviews 方法中更新 contentInset。【参考方案2】:设置半透明属性为NO
// In init or viewDidLoad of tab bar controller
self.tabBar.translucent = NO;
现在标签栏应该调整表格视图的大小。
translucent
属性适用于 iOS 7 及更高版本。
【讨论】:
看到这么多人建议将不透明的标签栏设置为半透明,真是令人沮丧。你不明白OP问的问题吗?self.tabBar.isTranslucent = false
for swift 4【参考方案3】:
你有两个选择:
第一
self.tableView.contentInset.bottom = self.tabBarController?.tabBar.frame.height ?? 0
这样就可以解决问题并保存 tab
栏的 transparent 属性。
第二
在设计视图中只需取消选中选项Under Bottom Bars
,但请记住tab bar
看起来像纯色(后面没有任何东西)。
【讨论】:
【参考方案4】:// 在 viewDidLoad() 中,以下几行对我有用
self.edgesForExtendedLayout = UIRectEdge.None
self.navigationController?.navigationBar.translucent = false
self.tabBarController?.tabBar.translucent = false
【讨论】:
【参考方案5】:斯威夫特:
self.tabBar.isTranslucent = false
注意:@Eric Amorde 答案转换为 Swift。
【讨论】:
以上是关于UITabBar 将隐藏 UITableView 的最后一个单元格的主要内容,如果未能解决你的问题,请参考以下文章
MonoTouch:UITabBar 与 UITableView 重叠
当我的应用程序通过我的 UITabBar 完成启动时,如何将加载的数据传递给 UITableView?