我希望在特定点到达时停止UIScrollView
滚动。
我认为它将通过以下代码解决。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let scrollY: CGFloat = scrollView.contentOffset.y
stopScrollViewIfNeeded(by: scrollY)
}
func stopScrollViewIfNeeded(by scrollY: CGFloat) {
guard scrollY <= SpecificY else {
return
}
scrollView.isScrollEnabled = false
}
但我错了。因为当禁用滚动时contentOffset.y
为0。
我改进了我的功能,如下面的代码,但它仍然无法正常工作。
func stopScrollViewIfNeeded(by scrollY: CGFloat) {
guard scrollY <= SpecificY else {
return
}
scrollView.setContentOffset(.init(x: 0, y: SpecificY), animated: false)
scrollView.isScrollEnabled = false
scrollView.isPagingEnabled = true
}
如何改善stopScrollViewIfNeeded()
按我的意愿工作?
答案 0 :(得分:0)
您可以覆盖didScroll中的滚动位置。 didScroll中的逻辑可以根据需要有效地制作滚动条。
答案 1 :(得分:0)
将contentOffset设置为:
只需要获取您想要停止的偏移值并将值分配为
水平ScrollView
n_partition=50
或垂直scrollView
UIView.animate(withDuration: 0.5) {
self.MainScollView.contentOffset.x = self.view.frame.size.width*2
}