有没有 'willSet' & 'didSet' 我可以拦截 UIScrollview.contentOffset?

Is there a 'willSet' & 'didSet' I can intercept for UIScrollview.contentOffset?

contentOffset.y 为负值时,我需要优雅地移动一帧。

问题是我不想让 contentOffset 调用 AFTER 内容已经降到 0 以下。

是否有一个 willSet 调用,我可以在 UIScrollView 偏移其内容之前拦截它?

您可以使用委托方法 scrollViewDidScrollscrollViewWillBeginDecelerating 并拦截 contentOffset.y。希望对你有帮助。

看来,这行得通:

class MyScrollView: UIScrollView {
    override var contentOffset:CGPoint {
        willSet {
            println("newOffset: \(newValue)")
        }
    }
}

UIScrollView 的子类中,只需覆盖 contentOffsetwillSet。好像是在 layoutSubviews().

之前调用的

您可以在 swift 中轻松添加 willSet。只是 UIScrollView 的子类,并且只覆盖它,就像这样。显然,除了 println 之外,您还想做一些其他事情,但我证实这肯定会在 didScroll 委托之前触发。我不知道它是否会解决您的动画问题,但这正是您所要求的。

import UIKit

class MyScrollView: UIScrollView {

    override var contentOffset: CGPoint { willSet { println("old value \(newValue)") } }

}