7

我有一个显示在导航控制器下的视图。该视图在顶部包含一个子视图,在底部包含一个表格视图。根据数据,该表可能具有超出可见高度的行。当我的行低于最后一个可见行时,如果我向上滚动视图,它会反弹回来,它不会留在那里。有没有办法让它留下来?我尝试使父视图成为滚动视图,但这没有帮助。我的观点来自 XIB。

4

3 回答 3

27

听起来你的 UITableView 的大小比 iPhone 屏幕上的可用区域略大。这可能是因为视图没有考虑到导航栏的大小。作为测试,进入 Interface Builder 并让 UITableView 小很多,比如说一半大小,这样你就可以清楚地看到顶部和底部。看看你是否仍然有同样的弹跳。

如果大小正确,则 UITableView 不需要 UIScrollView 即可按预期工作。事实上,我现在能想到的几个原因(除了水平滚动的),你会想要一个 UIScrollView 中的 UITableView。

于 2009-10-02T06:23:11.173 回答
0

在您的顶级视图控制器中,在“模拟指标”设置中,将顶栏和/或底栏(取决于您的视图控制器中显示的内容)设置为“不透明”。然后调整表格视图的大小以适应导航栏和工具栏/标签栏。最后,添加两个约束:

  1. 顶部空间到顶部布局指南
  2. 底部空间到底部布局指南

无论方向如何,对我来说都很好。

于 2014-08-20T13:06:29.203 回答
0

如果您不使用 Storyboard,您可以尝试以下(快速)代码:

tableView.contentInset = UIEdgeInsetsMake( (self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0)

self.view.addSubview(tableView)

如果您有工具栏或(如果您使用的是 TabBarController),您也需要调整底部:

tableView.contentInset = UIEdgeInsetsMake( (self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0)

self.view.addSubview(tableView)

请注意,这是一个简单且“粗略”的代码。如果需要,你可以让它更漂亮:)

于 2016-06-16T15:17:23.293 回答