2017-06-22 8 views
1

私はかなり長い間このことについて考えてきましたが、これに対する適切な答えは見つかりませんでした。スウィフト - 多くのものを持っているときの `UIGestureRecognizer`の性能

速い/ iOSの開発でどのようにperformantがUIGestureRecognizerですか?

は、私はあなたに理論的な例を挙げて説明しましょう: あなたがiPadのプロ(大画面、多くのスペース)のアプリを持っているし、そこにあなたがそうで、多分違うviewsbuttonsの数十としています。どんな理由であれ、viewsbuttonsのすべてが可動/クリック可能/サイズ変更可能である必要があります。

何が良いですか?各ビューに1つ(または複数)UIGestureRecognizer(s)追加

  • 単一のものを追加
  • (多くの活性ジェスチャ認識および多くの小さな、特定の処理方法をもたらす[多分viewの種類ごとにグループ化]) (一つの活性ジェスチャー認識とsubviewsを循環する必要がある大きな処理方法をもたらし、一方がタップされたかを決定)superview
に認識

私は最初のものが最も単純なものだと思っていますが、それは2番目のものよりも遅いですか?そのことはよくわからない。私の胃は、その多くを持っていることが良い解決策になることはできませんと述べていますUIGestureRecognizers

いずれにせよ、システムは(最悪の場合)すべてのものを循環させる必要があります。多くの認識装置や多くの人がsubviewsです。私はこれについて興味がある。

+0

>>>どのような理由であれ、これらのビューとボタンのすべてを移動可能/クリック可能/サイズ変更可能にする必要があります... すべてのアイテムに対して1つの瞬間を必要とします。 moveable/clickable/resizable /? –

+0

"(...)理論的な例を与えて(...)" - これは具体的なものではなく、実際のものではありません。画面上に表示されているすべての単一のビューを移動/クリック/サイズ変更できる必要があるという理論上の最悪のシナリオです。一瞬ではなく、永遠に、基本的に。いつでも、あなたは望む任意のビューを移動/タップ/することができるはずです。 – Quantm

答えて

1

ありがとうジェスチャー認識フローの面であなたの質問を見てみましょう - >右のジェスチャーにイベントを渡すことが戻ります、システムがこのジェスチャーに固有の最後のものを見つけるために、ビューのツリーで行く認めます私はrecommeこの方法は、

各ビューに1つ(または複数)UIGestureRecognizer(単数または複数)を追加- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

  • のUIViewの特定の一の方法で真使用するためにnded。この場合、システムは大部分の作業を行い、後でデバッグすることが非常に難しい間違いを防ぐことができます。信頼してください。これはUI向けです。特に画面の異なる部分に複数の異なるジェスチャーがある場合私の特別なケースでは、1つの画面上に約20個のジェスチャ認識機能を持ち、UIが遅れたりフレームが落ちたりすることのない巨大なビデオプレーヤーUIがあります。この方法は簡単で自己説明的です。私はそれをストーリーボードまたはxibを使用して実装することをお勧めします。インターフェイスビルダを参照して、いつでもUIの動作を変更するために認識プログラムを更新する必要があるときを思い出してください。このアプローチの速度は、システムによって保証されます。スーパー

このように一つの認識を追加

  • は、複数のビュー(複数が> 20)1つだけの単純なジェスチャに使用することができます。これは、ユーザーがさまざまな形のレンガをピックアップして貼り付けるゲームを実装する場合に起こります。一般的なUIタスクには適していません。速度はあなたの実装に依存し、質問自体に基づいて私はそれをすることをお勧めしません。このアプローチは、スピードに関連しない設計固有のものです。

関連する問題