保持 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 滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章