UIScrollViewをループしたいのですが、ほとんどのループをビューのリストではなく、1つのサブビューをスクロールしてシームレスにループします。ルーピングUIScrollView水平方向
本質的に、マップビューを作成しようとしています。ズームインしたりズームアウトしたり、スクロールしたりすることができます。
誰もがヒントを得ましたか?
UIScrollViewをループしたいのですが、ほとんどのループをビューのリストではなく、1つのサブビューをスクロールしてシームレスにループします。ルーピングUIScrollView水平方向
本質的に、マップビューを作成しようとしています。ズームインしたりズームアウトしたり、スクロールしたりすることができます。
誰もがヒントを得ましたか?
私はずっと前と同じ種類の問題で遊んでいて、1つの解決策のデモを一緒にハックしました。私は多くのタイルで構築されているかもしれないマップビューが管理しやすいかどうか分かりません。ここで
https://github.com/jonah-carbonfive/WrappingScrollView
は、私はそれがコードから明確でない場合にはやっているものです。
-scrollViewDidScroll:
デリゲートメソッドでは、タイルビューが完全に見えなくなっているかどうかを確認します。スクロールビューのコンテンツオフセットを変更してコンテンツビューの位置を変更し、表示領域の中央に戻します。タイルビューの画像を見ることからタイルビュー自体にジャンプしたことに気付かないことをユーザーは正しく認識しています。-hitTest:withEvent:
をオーバーライドして、ユーザーがタッチしようとする画像ビューの代わりにタイルビューを移動してから、super
を呼び出します。これですべてのタッチがタイル表示になります。これは夢中ですが、任意のインタラクティブなUIViewとUIControlをコンテナに投げ込み、片方を折り返してもう片方に折り返させることができます。
これはおそらくあなたにとって素晴らしい解決策ではありません。 1つ以上の次元でラップできるマップを描画したいとわかっていたら、マップを多くのタイルに分割します。 UIScrollViewのようにいくつかのコンテナビューでタッチを検出し、ユーザーがタッチを動かすとタイルの位置を変更します。視界からスクロールしてタイルを削除し、タイルを再利用してマップの新しく表示される領域を表示します。 単純なケースでは、マップイメージのコピーを2つだけ使用して実装できます。複雑なケースでは、UIScrollViewの多くを再作成しています。表示されているタイルを拡大縮小したり、さまざまな解像度で異なるタイルセットをロードしたりして、ズーム時にメモリ使用量を減らし解像度を向上させることができます。
この質問は、おそらくKhrobが説明した機能の種類を処理する方法のより良い例です:http://stackoverflow.com/questions/3071623/make-uiscrollview-wrap-around – Jonah
回答とリンクについては、ありがとうございました。その周りを遊んで、私はあなたが分離せずにUIScrollView内の別のページに当たる可能性を認識していませんでした。これはあなたのテクニックと組み合わせて、このトリックを行うようです。私はチャンスを得るとすぐにサンプルアプリを投稿します。 – Khrob
OK、私が後にしている動作をかなり得ました。同じ画像で複数のサブビューを表示するのではなく、1つの画像を2倍にしました。 – Khrob
[ワーキングサンプルプロジェクト](https://docs.google.com/leaf?id=0B7--XCpu3Or_MDAyNzU0MjktMjAxZS00NjQ1LTk3YzAtNGYzOGQwNTc4NjAy&hl=en) – Khrob
エヴァー画像のための方法を考え出すないスクロールの端部の「スティック」へエリア? –