将一个 UIScrollView 按比例滚动到另一个

Scrolling one UIScrollView Proportionately to Another

我有两个带垂直滚动的 UIScrollView:foregroundbackground。用户只能与前者交互;后者以编程方式移动。我怎样才能做到当用户滚动 foreground 时,background 以 ¼ 的比例滚动?例如,foreground 每滚动 4 像素,background 将在同一方向滚动 1 像素。

如何在 Swift2 中实现这种关系?

将您自己设置为 scrollView 委托 -

self.foregroundScrollView.delegate = self

并使用 UIScrollViewDelegate 方法:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    self.lastY = scrollView.contentOffset.y;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // Calculate how much distance the scrollView has travelled since last scroll
    CGFloat currentY = scrollView.contentOffset.y;
    CGFloat difference = currentY - self.lastY;

    // Set new contentOffset for your background scrollView
    CGPoint currentBackgroundOffset = self.backgroundScrollView.contentOffset;
    currentBackgroundOffset.y += difference/4;
    self.backgroundScrollView.contentOffset = currentBackgroundOffset;

    // Don't forget to update the lastY
    self.lastY = currentY;
}

Swift:

func scrollViewWillBeginDragging(scrollView: UIScrollView) {
    lastY = scrollView.contentOffset.y
}

func scrollViewDidScroll(scrollView: UIScrollView) {
    // Calculate how much distance the scrollView has travelled since last scroll
    let currentY = scrollView.contentOffset.y
    let difference = currentY - lastY

    // Set new contentOffset for your background scrollView
    var currentBackgroundOffset = backgroundScrollView.contentOffset
    currentBackgroundOffset.y += difference/4
    backgroundScrollView.contentOffset = currentBackgroundOffset

    // Don't forget to update the lastY
    lastY = currentY
}