どのように私は私自身のカスタムビューにiPhone UIScrollViewののフリック・ツー・スクロールの挙動を再現することができますか?
-
16-09-2019 - |
質問
私はUIScrollViewののフリック・ツー・スクロール動作を再現したいと思いますが、私は使用したくない(または使用することはできません)。私は何ができますか?
解決
さて、私はUIScrollViewののダイナミクスをキャプチャし、私自身のライブラリを実装することによって、このに答えました。
どのような私のコードに関する有用なのは、それはあなたが使用している座標系、アニメーション率、および特定のUIクラスの独立していることです。これは、簡単にお好みのカスタムビュークラスで入れ子にすることができます。
iPhoneのデフォルトフリック・ツー・スクロール動作が面白いです。あなたが長い時間のために指を押したまま、様々な方向に動かした場合、あなただけの非常に最後の方向は、スクロールの動きを計算するために使用されていることがわかります。
あなたはこのコードを自分で構築しようとすると、、しかし、あなたはすぐに、単に運動の方向を計算するために、最後の2点を使用してそれをカットするつもりはないことを発見するでしょう。代わりに、私のコードは、タッチの短い歴史を保持し、前の時間のタッチが「あったであろう」いくつかの小さな量を決定するために、線形補間を使用しています。この補間された点は、動きベクトルを計算するための基礎として使用されます。これは非常に喜ばしい相互作用につながります。
のコードはここに、githubの上で提供されています: http://gist.github.com/100855。これは、BSDライセンスの下でリリースされます。
他のヒント
だから何UIScrollViewの程度、あなたのために動作しませんでしたか?そのクラスはかなり柔軟です...
デイブ、私はあなたには、いくつかのコードを使用して独自の質問に返事しましたが、あなたが必要なものを与える以下を設定していない参照してください。
myScrollView.bounces = YES;
myScrollView.pagingEnabled = YES;
myScrollView.directionalLockEnabled = YES;
あなたはdirectionLockEnabled
を再実装しているように具体的に、それが聞こえます。あなたはUIScrollViewのを使用できない理由たぶん理解することはより興味深い問題である: - )
これはクールです!私は私のスクロール可能なビューは、1902年から2037年の範囲のグラフィックデータの1日分ですので、UIScrollViewのは効率的ではないであろうアプリでそれを使用しました。