2017-07-15 21 views
0

私はマップを持っており、その領域をクリック可能な要素に変えたいと考えています。私はPhotoshopを使用して地図をスプライスし、それぞれのボタンを個別にボタンに変えることができますが、それは私にはちょっとハッキリしていると思います。すべてのアスペクト比がデバイスからデバイスに変わらないかどうかはわかりません私は一緒にパズルをピース。単一のイメージをいくつかの複雑な形状のクリック可能な領域に分割する最良の方法は何ですか?イメージの異なる領域をボタンにする方法(swift/xcode)?

答えて

4

最も一般的な解決策は、おそらく、タップジェスチャ認識器を取り付けてタップジェスチャを解釈することによって、全体のビュー(画像ビュー)をクリック可能にすることです。

UIViewのカスタムサブクラスを作成し、その内部にイメージビューを表示し、タップジェスチャ認識器を接続し、タップジェスチャ認識器からのメッセージに応答して、どの領域がタップされたかを調べることをお勧めします。

+0

いいアイデアのようですね!その方法を使用すると、どの領域が完全にタップされたかを把握することが可能であると思いますか、それともそのような高い精度で構成するのは難しいでしょうか? – Dal

+1

@Dal正規化されたポイントのリストをどこかに格納して、すべての領域のパスを定義する必要があります。ユーザーがビューをタップすると、パスをテストして、どのタップが作成されたかを知るだけです(https://developer.apple.com/documentation/uikit/uibezierpath/1624345-containsを使用)。あなたが各パスに持っているポイントが多いほど、より正確になります。 – Imotep

+1

ユーザの指の精度よりも正確にタップを検出するのは簡単です。 (指タップはその性質上、不正確です。)タップを検出する方法はいろいろあります。あなたは長方形のグリッドを使用することができます、任意の組のretangles。ポイントと半径のセットを使うこともできますし、 'UIBezierPaths'と' UIBezierPath' contains(_ :)メソッドを使って不規則な形のタップを検出することもできます。 –

関連する問題