有没有 'willSet' & 'didSet' 我可以拦截 UIScrollview.contentOffset?
Is there a 'willSet' & 'didSet' I can intercept for UIScrollview.contentOffset?
当 contentOffset.y
为负值时,我需要优雅地移动一帧。
问题是我不想让 contentOffset
调用 AFTER 内容已经降到 0 以下。
是否有一个 willSet
调用,我可以在 UIScrollView
偏移其内容之前拦截它?
您可以使用委托方法 scrollViewDidScroll
或 scrollViewWillBeginDecelerating
并拦截 contentOffset.y
。希望对你有帮助。
看来,这行得通:
class MyScrollView: UIScrollView {
override var contentOffset:CGPoint {
willSet {
println("newOffset: \(newValue)")
}
}
}
在 UIScrollView
的子类中,只需覆盖 contentOffset
的 willSet
。好像是在 layoutSubviews()
.
之前调用的
您可以在 swift 中轻松添加 willSet。只是 UIScrollView 的子类,并且只覆盖它,就像这样。显然,除了 println 之外,您还想做一些其他事情,但我证实这肯定会在 didScroll 委托之前触发。我不知道它是否会解决您的动画问题,但这正是您所要求的。
import UIKit
class MyScrollView: UIScrollView {
override var contentOffset: CGPoint { willSet { println("old value \(newValue)") } }
}
当 contentOffset.y
为负值时,我需要优雅地移动一帧。
问题是我不想让 contentOffset
调用 AFTER 内容已经降到 0 以下。
是否有一个 willSet
调用,我可以在 UIScrollView
偏移其内容之前拦截它?
您可以使用委托方法 scrollViewDidScroll
或 scrollViewWillBeginDecelerating
并拦截 contentOffset.y
。希望对你有帮助。
看来,这行得通:
class MyScrollView: UIScrollView {
override var contentOffset:CGPoint {
willSet {
println("newOffset: \(newValue)")
}
}
}
在 UIScrollView
的子类中,只需覆盖 contentOffset
的 willSet
。好像是在 layoutSubviews()
.
您可以在 swift 中轻松添加 willSet。只是 UIScrollView 的子类,并且只覆盖它,就像这样。显然,除了 println 之外,您还想做一些其他事情,但我证实这肯定会在 didScroll 委托之前触发。我不知道它是否会解决您的动画问题,但这正是您所要求的。
import UIKit
class MyScrollView: UIScrollView {
override var contentOffset: CGPoint { willSet { println("old value \(newValue)") } }
}