誰かが左から右へコンテンツをスクロールするためにワイプジェスチャーを実行すると、同じ方向にスクロールしながら別の速度で背景画像を表示したいと思います。これらの古典的なゲームが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. Python(Pygame) - オブジェクトのインスタンスが異なる速度で背景に移動する
- 3. 背景画像のスクロール速度を上げる方法は?
- 4. 別のビューでスクロールするとUIScrollViewがスクロールする速度が速くなります
- 5. ホバーオーバーを回避すると、テキストと背景色の異なる変更速度
- 6. グラデーションの背景UIScrollView
- 7. AndEngine:加速度計で視差の背景を移動する
- 8. UIScrollviewのスクロール速度を下げる方法は?
- 9. UIScrollViewでユーザー速度のスクロールを知る方法はありますか?
- 10. モーダルでスクロールするとSafariで背景がスクロールする
- 11. jQuery UIのダイアログボックスで異なる背景
- 12. Androidでの背景スクロール
- 13. CSSグラデーションの背景でスクロール
- 14. スクロール背景は
- 15. 背景速記
- 16. Swift - UIScrollViewで背景イメージを設定する際の問題
- 17. Android - 異なる色と角度の背景色
- 18. ユニティ - 異なる速度
- 19. カスタム速度でのUIScrollViewのscrollRectToVisible
- 20. 画面の解像度によって異なる背景イメージですか?
- 21. ゲームループの速度は、異なるコンピュータで異なります
- 22. 異なるサイト間でダウンロード速度が大きく異なる
- 23. JQuery scrollスクロール速度が速すぎる
- 24. 背景を変えるimg、スクロール(各セクションごとに異なる画像)
- 25. 変更UIScrollViewのドラッグ速度
- 26. Collectionセルで異なる背景色を確認する
- 27. viewDidLoadのサブクラスで異なる背景イメージを設定する
- 28. 異なる背景を持つAndroidボタン
- 29. 減速中のUIScrollViewの速度0
- 30. CSSの背景画像をスクロールする
私はコアアニメーションで試してみましたが、スクロールが非常に遅くなってしまい、サッカーとしてはもう気分が良くなりません。 Ries –