保持 UIScrollView 滚动到底部

Posted

技术标签:

【中文标题】保持 UIScrollView 滚动到底部【英文标题】:Keep UIScrollView scrolled to bottom 【发布时间】:2016-05-17 12:04:04 【问题描述】:

我需要以某种方式保持滚动视图在其高度减小时始终滚动到底部。

边界变化动画时很难解决。是否有一些“重力”属性用于这样的目的?

【问题讨论】:

身高下降是什么?内容大小或视图 【参考方案1】:

您可以通过在用于调整UIScrollView 大小的同一动画块中使用setContentOffset 的非动画版本来实现此行为——在这种情况下,两个更改将同时动画。比如:

UIView.animateWithDuration(0.5, animations:  () -> Void in

    let delta: CGFloat = 100

    /// Change UIScrollView's height with some delta value, for instance:
    self.scrollView.frame.size.height -= delta

    /// Update content offset with the same delta value:
    self.scrollView.contentOffset.y += delta
)

【讨论】:

即使对于多个并发动画,您的答案也是正确的。谢谢!【参考方案2】:

每次缩小UIScrollView 的框架时,请尝试使用setContentOffset:animated: 滚动到底部。

【讨论】:

不幸的是,这不起作用,因为高度变化动画。【参考方案3】:

您正在使用动画降低滚动视图的高度。您可以在动画完成块中使用setContentOffset:animated:。它将保持滚动视图始终滚动到底部。

【讨论】:

如果你在动画完成块中这样做,内容偏移将仅在动画完成时更新,例如当视图完成调整大小动画时,滚动视图内容将会“跳转”。

以上是关于保持 UIScrollView 滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 以编程方式滚动到底部

触摸状态栏时 UIScrollView 滚动到底部

uiscrollview 不能滚动到底部

UITextField 文本更改时 UIScrollView 滚动到底部

uiscrollview无法滚动到底部

UIScrollView 在 iOS 7 中没有滚动到底部