由于标签栏挡住了单元格,如何设置表格视图单元格的位置?

Posted

技术标签:

【中文标题】由于标签栏挡住了单元格,如何设置表格视图单元格的位置?【英文标题】:How to set the position of the table view cell because the tab bar block the cell? 【发布时间】:2014-10-07 15:21:35 【问题描述】:

我的故事板的结构是:

a--b--c,d,e

a 是一个导航控制器 b 是标签栏控制器 c,d,e 是选项卡视图 c 是一个表格视图控制器,包含大约十个单元格。 当我向上滚动时,最后一个单元格和标签栏的位置重叠。 如何设置最后一个单元格的位置,以便它可以放置标签栏以便我们触摸它? 谢谢。

【问题讨论】:

在storyboard中,选择table view,然后在Xcode的顶部菜单栏,editor menu,去pin,Bottom space to superview 当我选择表格视图时,无法选择超级视图项的底部空间 【参考方案1】:

将此添加到您的 tableview 控制器中,主要目标是降低您的表格高度。

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];
    CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height;
    CGRect frame = self.tableView.frame;
    frame.size.height -= tabBarHeight;
    self.tableView.frame = frame;

上面的代码会导致一个灰色的tabBar。而且每次切换tab都会降低table高度,所以把上面的代码移到viewDidLoad中,设置tabBar translucent为NO。

解决方案 1:

CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height;
CGRect frame = self.view.frame;
frame.size.height -= tabBarHeight;
self.view.frame = frame;
self.tabBarController.tabBar.translucent = NO;

或者,您可以在 viewDidLoad 中配置 tableView 的 contentInset。

解决方案 2:

self.tableView.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, CGRectGetHeight(self.tabBarController.tabBar.frame), 0.0f); 

【讨论】:

是的,这些代码可以解决我的问题。但是奇怪的事情发生了,标签栏背景变成灰色,而我切换到另一个标签视图标签栏背景是白色的?【参考方案2】:

问题是 TableView 高度不正确。 您必须设置 TableView 的约束,以便 tableView 的底部位于 TabBar 的开头。

【讨论】:

你的意思是我将底部单元格的高度设置得足够大,以便它可以位于标签栏的开头吗?但这有点奇怪,因为单独的行远离底部单元格的上下文 NO 表格视图高度太大。您必须使 Tableview 更短。

以上是关于由于标签栏挡住了单元格,如何设置表格视图单元格的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何动态更改自定义单元格的表格视图单元格的高度?

如何根据标签文本快速更改表格视图单元格高度?

设置表格视图单元格的动态高度

DATAGRIDVIEW 单元格的自动换行

如何在基于部分的表格视图中获取开关更改事件中单元格的索引路径

如何在表格视图单元格的内容视图中居中 UILabel?