【发布时间】:2014-04-07 17:53:46
【问题描述】:
我正在尝试在 UIScrollView 内的 UIView 上创建视差效果。 效果似乎有效,但效果不是很好。
- 首先我将两个 UIView 子视图添加到 UIScrollView 并设置 UIScrollViews contentSize。
- 视图汇总并创建 {320, 1000} 的 contentSize。
-
然后我在scrollViewDidScroll中实现了以下:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat offsetY = scrollView.contentOffset.y; CGFloat percentage = offsetY / scrollView.contentSize.height; NSLog(@"percent = %f", percentage); if (offsetY < 0) { firstView.center = CGPointMake(firstView.center.x, firstView.center.y - percentage * 10); } else if (offsetY > 0){ firstView.center = CGPointMake(firstView.center.x, firstView.center.y + percentage * 10); } }
这些代码行确实会产生视差效果,但是随着滚动的继续,如果我滚动到原始起始位置,视图不会返回到它的原始位置。
我尝试过操作视图层和框架,结果都一样。
任何帮助将不胜感激。
【问题讨论】:
-
条件等于百分比 = fabs(percentage);,这似乎是错误的。当你只用 else 块替换条件时,它看起来如何?
-
我没有尝试过,所以不是答案,但这段代码对我来说看起来更有希望:github.com/ralfbernert/RBParallaxScrolling/blob/master/…
-
@danh,如果我用“else”替换“if”,当我向下滚动(偏移量 = -x)时,视图会慢慢反弹。
-
我在答案中添加了一个编辑,以数字方式解释您的问题存在的原因。
标签: ios objective-c uiview uiscrollview parallax