如何滚动到 UITableView 底部以查看所有单元格内容而不调整单元格高度?

Posted

技术标签:

【中文标题】如何滚动到 UITableView 底部以查看所有单元格内容而不调整单元格高度?【英文标题】:How to scroll to bottom of UITableView to see all cell contents without adjusting cell height? 【发布时间】:2014-12-25 04:03:53 【问题描述】:

我的 UITableView 无法滚动到最后一个单元格时遇到问题。它只是“反弹”回来。根据我运行的 iPhone 模拟,它会反弹超过 2 个单元格,所以如果我在 3.5 英寸模拟器上运行它,最后 2 个单元格将无法访问。

我有启用 AutoLayout 的约束设置,这是我的要求。我查看了一些关于 SO 的建议,尝试了一些解决方案,但到目前为止,它不起作用。

如果可能,我不想设置单元格高度。

在滚动状态下,当我向上滚动时,我可以看到另外 2 个单元格,但是一旦我松开鼠标,它就会弹回正常状态,最后 2 个单元格不在视图中。

如何在不调整高度的情况下让 UITableView 在小窗框内滚动,仍然可以看到所有单元格内容?

【问题讨论】:

你的 tableView 的框架是什么? 我很抱歉,对此还是很陌生,我如何得到你的要求?我 NSLog 表格视图的框架:0, 24, 600, 576 是的,你必须确保你的框架是可见的,而我不清楚你的层次结构。 我的 tableview 在 UIView 中,并且 UIView 位于屏幕底部附近,如果我向上滑动,从屏幕截图中可以看到 tableview 是可见的。我将如何解决这个问题?我还放了故事板的截图。谢谢 @WorldOfWarcraft 您指的是调整单元格的高度吗?..如果不是,我该如何实现? 【参考方案1】:

几个问题:

1.您设置的约束显示警告。根据您的应用,您需要自行修复;

2.由于约束问题,底部单元格不可见。 在你的swipeUpMethod 方法中,你需要调整你的约束。在这种情况下,我将self.markerViewTopVerticalConstraint.constant 设置为-(self.view.frame.size.height/2.5) - 60。因此,您需要根据 tableView 中显示的单元格数量来计算约束高度。

- (void)swipeUpMethod

  [self.view layoutIfNeeded];

  [UIView animateWithDuration:0.3
                 animations:^
                     self.markerViewTopVerticalConstraint.constant = -(self.view.frame.size.height/2.5) - 60;
                     [self.view layoutIfNeeded];
                 ];
  self.swipeMarkerImageView.image = [UIImage imageNamed:@"down_arrow"];
  NSLog(@"self.markersView: %@",self.markersView);
  NSLog(@"self.markersTableView :%@",self.markersTableView);

现在,它看起来像:

圣诞快乐。

【讨论】:

【参考方案2】:

这是一个自动布局问题。确保自动布局设置正确。据我从您的快照中了解到,地图视图的高度是恒定的,而表格视图的高度会根据设备高度而变化。现在要正确设置自动布局,选择地图视图并添加以下约束,顶部、左侧、宽度和高度。确保取消选中“限制到边距”。现在对于表格视图,使用以下自动布局。添加顶部、底部左侧和右侧约束。 在此之后,请检查其他模拟器。希望这会有所帮助。

【讨论】:

2 个问题。 1:你说的是“Google Map View”还是“Marker View”?2:设置宽度和高度的约束会在运行不同的模拟器时产生冲突。

以上是关于如何滚动到 UITableView 底部以查看所有单元格内容而不调整单元格高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何从底部向上填充UITableView?

如何停止 UITableView 在顶部和底部的滚动?

自动滚动到 UITableView 底部

UITableView - 最后一节的页脚滚动到屏幕底部。如何预防?

如何检测 UITableView 滚动?

如何在 UITableView swift 3 中使用动画在底部滚动