我已经看过许多关于创建视差效果的教程,但是大多数教程似乎都是使用一个图像和一个UITableView或使用加速度计。我没有通过一个教程来展示如何使用UIScrollView进行它。
我正在寻找的效果可以在Yik Yak和Two Dots中看到。我找不到任何教程/ githubs?
因此,根据滚动位置寻找要移动的对象。
答案 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];
}
}