誰かが左から右へコンテンツをスクロールするためにワイプジェスチャーを実行すると、同じ方向にスクロールしながら別の速度で背景画像を表示したいと思います。これらの古典的なゲームが20年前に何をしたのと同じように(覚えて、誰でもか?)UIScrollViewで異なる速度で背景をスクロールする
答えて
あなたはCoreAnimationで行うことができます。あなたはscrollViewDidEndDragging:willDecelerate:
とscrollViewWillBeginDecelerating:
UIScrollViewDelegateの方法にフックしたいと思うでしょう。その後、中心の位置を変更して画像上でアニメーションを開始します。アニメーションの詳細については、this SO articleを参照してください。
2つのUIScrollView
のインスタンスを使用してこれを実行しました。最初の部分は実際のコンテンツが表示され、2番目の部分(最初はzオーダーの後ろにあります)は、動きの遅い背景がある場所です。そこから上部UIScrollView
には、contentOffset
が変更されたときに通知を受ける代理人が添付されています。その代理人は、次に、バックグラウンドスクロールのcontentOffset
をプログラムで設定し、フォアグラウンドに対してスクロールを遅くするために定数に乗算します。だから、例えば、あなたのような何かを持っているかもしれません:あなたはこのようなものになってしまいますあなたは簡単にそれの下でUIImageViewでスクロールしたスクロールビューを実装することによってこれを行うことができます
// 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;
}
... を...あなたが望むよう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
これは絶対的な作業です –
ずにできるだけ多くの画像ビューを階層化することができますが、複数の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. ページのスクロールとは異なる速度でスクロールする
- 2. AndEngine:加速度計で視差の背景を移動する
- 3. グラデーションの背景UIScrollView
- 4. UIScrollViewでユーザー速度のスクロールを知る方法はありますか?
- 5. jQuery UIのダイアログボックスで異なる背景
- 6. モーダルでスクロールするとSafariで背景がスクロールする
- 7. Androidでの背景スクロール
- 8. スクロール背景は
- 9. 画面の解像度によって異なる背景イメージですか?
- 10. カスタム速度でのUIScrollViewのscrollRectToVisible
- 11. viewDidLoadのサブクラスで異なる背景イメージを設定する
- 12. BaseExpandableList異なる背景を持つ異なるグループ
- 13. 変更UIScrollViewのドラッグ速度
- 14. 異なる速度で列をスクロールするにはどうすればよいですか?
- 15. リストボックスアイテムWPF、異なるアイテムの異なる背景色
- 16. mschart:異なるy値範囲の背景色が異なる?
- 17. jQuery:横にスクロールするボディー背景?
- 18. 同じ速度でCAAnimationオブジェクトの異なる距離ですか?
- 19. jqueryのスクロール速度ですか?
- 20. 背景色を透明な背景画像で表示する
- 21. 速度の異なるプラットフォーム上のストリーミングデスクトップ
- 22. Javaスイングタイマーの速度が異なる
- 23. 透明な背景を持つテキストをスクロールする
- 24. 「背景スクロールビュー」を「フォアグラウンドスクロールビュー」で同期スクロールする方法
- 25. スクロールCSSの背景画像
- 26. 迅速な背景色のアニメーションループ
- 27. LINQ to SQL Server:異なる列の同じクエリで速度が異なる
- 28. NSScrollViewでスクロールの背景が透明でない
- 29. CSS:背景位置の異なるコーナーオフセットでの問題
- 30. UIScrollViewに背景画像を追加する
私はコアアニメーションで試してみましたが、スクロールが非常に遅くなってしまい、サッカーとしてはもう気分が良くなりません。 Ries –