【问题标题】:iOS: Table view, allow scrolling "further down" than the endiOS:表格视图,允许比结尾“向下”滚动
【发布时间】:2015-01-09 13:29:33
【问题描述】:

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

【问题讨论】:

  • 也许放大 contentSize 高度会起作用。
  • 你能简单地把表格视图缩短一点,以便按钮显示在它下面吗?

标签: ios uitableview uiscrollview


【解决方案1】:

调整表格视图的内容插入。

例如,如果您的按钮高度为 50 点,并且您的表格框架是整个窗口,您可以将表格设置为与按钮顶部对齐,如下所示:

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);

【讨论】:

  • 完美,正是我想要的!谢谢朋友
  • 很高兴我能帮上忙! p.s.这个技巧实际上与所有滚动视图相关(例如,表格视图、集合视图、Web 视图、滚动视图等)
  • 很好的解释和简单的答案:) 为问题和答案投票。
  • @ScottyBlades 的替代品是什么?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    AutomaticallyAdjustsScrollViewInsetsis deprecated in ios 11.

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 2012-08-27
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      相关资源
      最近更新 更多