我可以在滚动位置停止UIScrollView吗?

时间:2018-04-11 02:57:21

标签: ios swift uiscrollview

我希望在特定点到达时停止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()按我的意愿工作?

2 个答案:

答案 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
        }