在 UITableViewController 中启用滚动

Enable scrolling in UITableViewController

我想让我的 UITableViewController 仅在屏幕上没有足够的空间容纳其所有单元格时滚动。我使用的静态单元格旨在显示在 iPhone 5、6 和 6 加大屏幕中。但是,当显示在 4s 屏幕中时,底部单元格会被截断。

理想情况下,我想使用 AutoLayout 将 table 视图的底部锚定到其父视图的底部,就像我在我的应用程序中使用其他 table 视图一样,但是Xcode 不允许我在 UITableViewController 中向 UITableView 添加约束。我必须使用 UITableViewController 的原因是因为我正在使用 pod 作为滑动菜单 (https://github.com/SocialObjects-Software/AMSlideMenu) 的子类 UITableViewController

我曾尝试根据屏幕尺寸更改 UITableView 框架的大小,因为我假设如果单元格占用的空间多于包含框架,则会自动添加滚动条。我使用了以下代码来做到这一点:

CGRect frame = self.tableView.frame;
[self.tableView setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, [[UIScreen mainScreen] bounds].size.height - HEADER_HEIGHT)];

但是,它对 table 的显示方式没有影响。

有谁知道我如何能够动态设置 UITableView 的底部并在屏幕太小时向单元格添加滚动条?我也欢迎任何可能有助于避免必须这样做的建议,因为我宁愿不必做任何太 hacky 的事情。

UITableViewController 身高是通过自动计算您出示的 UITableViewCell 个数来确定的。您可以自定义单元格高度,以便 UITableViewController 的高度将根据您的需要自动更改。

您可以将 alwaysBounceVertical 属性 设置为 false,这样 tableView 只会在其 contentSize 大于 table 视图的 frame 您可以根据自己的喜好限制视图。

tableView.alwaysBounceVertical = NO;