带有额外空间的UITableViewController滚动(如Notes应用程序)

Ond*_*cka 9 user-interface scroll objective-c uitableview ios

如何复制Notes应用程序中发现的此行为:

  1. 你有一个UITableViewController项目,
  2. 您可以向下滚动列表(包含大量项目),
  3. 当你点击列表的底部时,你可以"过度滚动"一下,但列表不会一直向后滚动.最后一项下面会留下一些空间.Notes中使用此空间来显示一些布局图像.

用照片演示: 照片1

这是一个"未滚动"列表.它很容易创建这样的使用UITableViewController.当你"拉"列表时,默认UITableViewController只会弹回到这个状态.

但是,Notes允许这样: 照片2

例如.滚动后留下一点空间,不要让它一直反弹.

你如何复制这种行为?

Kir*_*lex 12

您可以像这样更改tableView的内容insets:

[_tableView setContentInset:UIEdgeInsetsMake(0, 0, 100, 0)];
Run Code Online (Sandbox Code Playgroud)

在滚动时,您最终会在tableView的底部插入一个100像素的插页.


Mar*_*ams 5

这是一个简单的方法。

只需(也许在您的 ViewDidLoad 中)将一个空白 UIView 作为表页脚添加到 UITableView 中。

像这样的东西:

UIView *footer = [[UIView alloc] init];
footer.frame = CGRectMake(0, 0, 0, 100); // The only one that matters here is the height
self.tableView.tableFooterView = footer; // tableView is an outlet to the tableView
Run Code Online (Sandbox Code Playgroud)


小智 5

迅速:

我认为在 Swift 中这样做的方法是这样的。

tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0)
Run Code Online (Sandbox Code Playgroud)

我知道这是一个老问题,但它可能会让某人受益。