滚动视图的视差效果

时间:2014-10-17 16:10:36

标签: ios uiscrollview

我已经看过许多关于创建视差效果的教程,但是大多数教程似乎都是使用一个图像和一个UITableView或使用加速度计。我没有通过一个教程来展示如何使用UIScrollView进行它。

我正在寻找的效果可以在Yik Yak和Two Dots中看到。我找不到任何教程/ githubs?

因此,根据滚动位置寻找要移动的对象。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

我在UITableView中使用单个背景图像实现了视差,但您可能会遍历所有对象并使用不同的因素,具体取决于视图的“深度”。

这就是它基本上是如何完成的,但我很确定你能够轻松地将我的代码翻译成你的项目:

// of cause, you have to have your view controller as delegate for the scroll view
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGRect backgroundImageFrame = [_backgroundImageView frame];
    backgroundImageFrame.origin.y -= (scrollView.contentOffset.y - _previousY) / 2.25;
    //     play around with different factors here to meet your needs here       ^^^^

    CGFloat scaledImageHeight = _backgroundImageView.image.size.height * _backgroundImageView.scaledImageSize.height;
    CGFloat relativeImageY = _backgroundImageView.superview.frame.size.height - backgroundImageFrame.origin.y;

    if ((scaledImageHeight - relativeImageY + 49) >= 0) {
    //    this is just a bit extra padding    ^^
        _previousY = scrollView.contentOffset.y;
        [_backgroundImageView setFrame:backgroundImageFrame];
    }
}