iOS:Table 视图,允许滚动 "further down" 结束

iOS: Table view, allow scrolling "further down" than the end

抱歉,这个问题听起来有点混乱。我有两个按钮与底部的 table 视图重叠,因此如果 table 视图滚动 "normal" 最后一行会被这些按钮部分隐藏。这就是为什么我想允许滚动 table 就像一行的高度一样向下滚动,所以最后一行在这两个按钮的顶部。我怎样才能做到这一点?

调整 table 视图的内容插图。

例如,如果您的按钮高度为 50 点并且 table 的框架是完整的 window,您可以将 table 设置为对齐到顶部你的按钮是这样的:

tableView.contentInset = UIEdgeInsetsMake(0, 0, 50, 0);

注意:在 iOS 中,7+ 视图控制器有一个 属性 automaticallyAdjustsScrollViewInsets 默认设置为 YES。当此 属性 设置为 YES 时,您手动设置的 contentInsets 可能会被覆盖。假设您有某种想要在其下滚动的导航栏,您可以将顶部边缘插入设置为 topLayoutGuide 的长度。

您的最终解决方案(将其放入 viewDidLoad):

self.automaticallyAdjustsScrollViewInsets = NO;
tableView.contentInset = UIEdgeInsetsMake(self.topLayoutGuide.length, 0, 50, 0);

这将使内容向上移动。
如果您希望它们向下移动,您可以相应地更改插图。

    func shiftScrollingUp() {
        yourScrollView.contentInsetAdjustmentBehavior = .never
        yourScrollView.contentInset = UIEdgeInsetsMake(0, 0, 150, 0)
    }

AutomaticallyAdjustsScrollViewInsets is deprecated in ios 11.

正如其他人所指出的,弃用使得这个解决方案变得不可能,如果我们使用节页脚,它会一直显示在插图中。一个更简单的解决方案是添加一个 tableFooterView 以允许底部单元格滚动经过按钮。像这样:

    let bottomView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 83))
    bottomView.backgroundColor = .clear
    tableView.tableFooterView = bottomView