の非透明ピクセルのみでのタッチをUIImageView
効率的に検出するにはどうすればよいでしょうか?
で表示された下のような画像を考えてみましょうUIImageView
。目標は、画像の非透明 (この場合は黒) 領域でタッチが発生した場合にのみジェスチャ認識機能が応答するようにすることです。
アイデア
hitTest:withEvent:
orをオーバーライドpointInside:withEvent:
します。ただし、これらのメソッドはタッチ イベント中に何度も呼び出されるため、このアプローチは非常に非効率的です。- 指は 1 ピクセルよりも大きいため、1 つのピクセルが透明かどうかを確認すると、予期しない結果が生じる可能性があります。ヒット ポイントの周囲のピクセルの円形領域をチェックするか、エッジに向かう透明なパスを見つけようとする方がうまくいく場合があります。
ボーナス
- 画像の外側と内側の透明なピクセルを区別できると便利です。この例では、ゼロ内の透明なピクセルも有効と見なされます。
- 画像に変換がある場合はどうなりますか?
- 画像処理をハードウェア アクセラレーションできますか?