当有人使用擦除手势将内容从左向右滚动时,我想让背景图像以相同方向滚动,但速度不同。就像20年前这些经典游戏所做的一样(请记住,任何人都可以)在UIScrollView上以不同速度滚动背景
回答
你可以用CoreAnimation来做到这一点。你会想要钩入scrollViewDidEndDragging:willDecelerate:
和scrollViewWillBeginDecelerating:
UIScrollViewDelegate方法。然后通过更改中心位置在图像上开始动画。有关动画的更多信息,请参阅this SO article。
我通过使用两个UIScrollView
实例完成了这个实例。第一个是显示实际内容的位置,第二个(位于第一个z顺序后面)是我的移动速度较慢的背景。从那里,顶部UIScrollView
有一个代理附加到它,contentOffset
更改时得到通知。该代表反过来以编程方式设置背景滚动器的contentOffset
,与常数相乘以减慢相对于前景的向下滚动。所以,举例来说,你可能有这样的:
// Defined as part of the delegate for the foreground UIScrollView
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UIScrollView* scroll_view(static_cast<UIScrollView*>(bkg_scroller_m.view));
CGPoint offset(scrollView.contentOffset);
offset.x = offset.x/3;
offset.y = offset.y/3;
// Scroll the background scroll view by some smaller offset
scroll_view.contentOffset = offset;
}
,您可以轻松实现滚动视图下它与一个UIImageView并滚动做到这一点... 你有这样的事情结束了...与backgroundImageView是一个UIImageView添加到视图子视图之前......你可以为你想不性能问题
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
float factor = scrollView.contentOffset.x/(scrollView.contentSize.width - 320);
if (factor < 0) factor = 0;
if (factor > 1) factor = 1;
CGRect frame = backgroundImageView.frame;
frame.origin.x = factor * (320 - backgroundImageView.frame.size.width);
backgroundImageView.frame = frame;
}
这太棒了。这应该是被接受的答案! – quantum 2012-07-14 01:13:31
这是绝对的工作 – 2014-12-16 05:11:46
例如,你有多个scrollviews层尽可能多的图像意见,希望他们滚动差别速度。这里是Salamatizm答案修改代码库:
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
float factor = scrollView.contentOffset.x/(scrollView.contentSize.width - screenSize.width);
if (factor < 0) factor = 0;
if (factor > 1) factor = 1;
CGSize parralaxSize = self.parralaxBackgroundView.contentSize;
CGPoint parallaxOffset = CGPointMake(-(factor * (screenSize.width - parralaxSize.width)), 0);
[self.parralaxBackgroundView setContentOffset:parallaxOffset animated:NO];
- 1. UIScrollView背景图像滚动速度比内容快
- 2. CSS多背景以不同的速度
- 3. 背景图像也滚动同时滚动内容在UISCROLLVIEW
- 4. 更改UIScrollView滚动速度
- 5. 如何降低UIScrollview的滚动速度?
- 6. UIScrollview scrollViewShouldScrollToTop - 减慢滚动速度
- 7. 以页面滚动的不同速度滚动项目
- 8. 如何使UIScrollView以特定速度自动滚动?
- 9. 快速无尽的滚动背景
- 10. 让div以不同的速度向上滚动,但在同一地点结束
- 11. 滚动背景
- 12. 滚动背景
- 13. 如何更改滚动背景pygame的速度?
- 14. 我们能赶上的UIScrollView的默认滚动速度更快
- 15. 垂直滚动div不同速度
- 16. 以不同的图像作为背景在视觉基础上滚动
- 17. 改变背景移动速度
- 18. 在滚动视图上应用背景
- 19. UIScrollView滚动速度太慢,从不调用scrollViewDidEndDecelerating
- 20. UIScrollView不滚动
- 21. UIScrollVIew不滚动
- 22. UIScrollView不滚动...
- 23. 当在不同的设备上快速运行时,UIScrollView不会滚动或部分滚动
- 24. 更改UIScrollView拖动速度
- 25. 带分页的UIScrollView的灵敏度/滚动速度
- 26. 滚动场景背景 - Unity
- 27. 滚动背景边
- 28. jquery - 滚动背景
- 29. Android滚动背景
- 30. 不同的滚动速度与溢出:滚动
的Het SLF,我尝试了与核心动画,但后来我去滚动很慢得多,因为它sutch不觉得好了。里斯 – 2009-09-09 13:47:46