web-dev-qa-db-ja.com

ページネーション付きのUIScrollView +前/次のページの一部を表示

レベルパックを選択するために "Cut the Rope"ゲームで使用されるものと同様の "ゲームモード"メニューを作成しようとしています。

Cut the Rope menu

特に私が欲しいのは、「現在のアイテム」(この場合は「2.ファブリックボックス」アイテム)と前後のアイテムのビットを表示するのと同じ効果を達成することです(ユーザーがスクロールによって利用可能なモードがさらにあります)、ページ付けが有効になっています(スクロールビューを自動的にこれらのアイテムの「中央」に表示します)。

これは、ページネーションが有効になっているUIScrollViewの自然な仕事のようですが、ドキュメントから、ページ境界は複数のビュー境界で発生しているようです。

それで、ページ境界が複数のビュー境界で発生する場合、UIScrollViewでこの効果を達成する方法はありますか?

画面の全幅が表示されるという事実は、この場合はUIScrollViewフレームの幅が320pxであることを示唆していますが、前後のアイテムを少しだけ表示するには、個々のアイテムをそれよりも小さくする必要があります。したがって、ページネーションを台無しにしています...

32
André Morujão

参考までに、ここからページコントロールのサンプル実装を確認できます。 https://developer.Apple.com/library/content/samplecode/PageControl/Introduction/Intro.html

希望する実装の場合、驚いたことに、スクロールビューの幅は実際には320(または480)よりも小さくなっています。設定するマジックプロパティは次のとおりです。

scrollView.clipsToBounds = NO

この実装の唯一の問題は、タッチがscrollViewの境界の外にある場合、scrollviewがタッチイベントを取得しないことです。これは、親のhitTestイベントをscrollViewに渡すことで修正できます。

より良い説明にリンクするだけです: Mobile SafariタブのようなUIScrollView水平ページング

私が推奨するものとは少し異なりますが、同じことを行います。

編集:

上記を実行するLXPagingViewsと呼ばれる小さなプロジェクトがあります。うまくいけば、すぐに使えるようになります(プルリクエストまたは問題のフィードバックをドロップしてください): https://github.com/lxcid/LXPagingViews =

45
lxcid