When somebody does a wipe gesture to scroll the content from left to right, I would like to have a background image scrolling into the same direction, but at a different speed. Much like what these classic games did do 20 years ago (remember that, anybody????)
You can do it with CoreAnimation. You'll want to hook into the scrollViewDidEndDragging:willDecelerate:
and scrollViewWillBeginDecelerating:
UIScrollViewDelegate methods. Then begin an Animation on your image by changing the center position. See this SO article for more on animations.
Het slf, I tried it with core animation but then my scrolling goes very much slower and as sutch it doesn't feel good anymore.
Ries
I accomplished this by using two UIScrollView
instances. The first is where the actual content is displayed, and the second (which is behind the first in z-order) is where I have my slower-moving background. From there the top UIScrollView
has a delegate attached to it that gets notified when the contentOffset
changes. That delegate, in turn, programatically sets the contentOffset
of the background scroller, multiplied against a constant to slow the scroll down relative to the foreground. So, for instance, you might have something like:
// 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;
}