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

时间:2013-03-04 13:45:26

标签: ios objective-c uitableview user-interface scroll

如何复制Notes应用中的此行为:

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

    这是一个“未注册”列表。使用UITableViewController很容易创建。当您“拉”列表时,默认UITableViewController会反弹回此状态。

    但是,Notes允许这样: Photo 2

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

    你如何复制这种行为?

5 个答案:

答案 0 :(得分:12)

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

[_tableView setContentInset:UIEdgeInsetsMake(0, 0, 100, 0)];

滚动时,最终会在tableView底部显示100像素的插页。

答案 1 :(得分:4)

这是一种简单的方法。

简单地(在你的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

答案 2 :(得分:4)

<强>夫特:

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

tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0)

我知道这是一个老问题,但它可能对某人有利。

答案 3 :(得分:3)

夫特:

    let footer:UIView = UIView(frame: CGRectMake(0, 0, 0, 44))
    tableView.tableFooterView = footer

答案 4 :(得分:2)

更新Kirualex回复:

理想位置: UITableViewController viewDidLoad

Swift 3:

// Add 50 extra pixels at bottom of the list when scrolling
self.tableView.contentInset = UIEdgeInsets(top:0, left: 0, bottom: 50, right: 0)