2つの画像ビューがあります。それらは「パズルのピース」です。一方が他方の中に収まるかどうかをテストしたいと思います。フレームが重なっているわけではありません。私はそれがCGRectのものだと思います...しかし、彼らは外側の境界をテストしているようです。何かアイデアをいただければ幸いです。ありがとう。
2 に答える
ここでブレインストーミングをするだけです...多分これはあなたにあなたのために働く何かを考えさせるでしょう。画像が重なっていない場合は、画像Bの上に画像Aを描画すると、画像Aの上に画像Bを描画した場合と同じ画像になります。重なっている場合は、異なる画像になります。画像A、次にBを描画するようなことを行うことができます。結果のチェックサムを作成し、Aを再度描画して、それをチェックサムします。チェックサムが一致する場合、パズルのピースは適合します。
各画像を表す1ビットマスクがある場合、それらをOR処理し、XOR処理すると、オーバーラップしない場合は同じ結果になり、オーバーラップする場合は異なる結果になります。
事前に正しい順番を知っていますか?UIImageView
画像のインデックス番号を表すタグをそれぞれに割り当てる方がよい場合があります。次に、一種のメッシュを作成し、ピースが配置されたセルを確認します。セル番号とUIImageView
タグが一致する場合-これは適切な場所です。
画像が2つしかなく、1つが別の特定の領域に収まる必要がある場合は、この穴のフレームを保存して、このフレームの中央付近にピースが配置されているかどうかを確認できます。ピクセルやビットマスクをチェックするときは、ユーザーを非常に正確にする必要があるため、よりユーザーフレンドリーになります。または、比較コードはいくつかのシフトを許可する必要があり、非常に複雑になります。
ただし、穴のフレームをハードコーディングしたくない場合は、動的に計算できます(画像内の透明な領域を見つけるだけです)。とにかく、このソリューションは、その場でビットの一致をチェックするよりも効果的です。