UIViewには3つのレイヤーが追加されています。 1つのレイヤーが長方形を描画します。 1つは円を描きます。 1つはポリゴンを描画します。レイヤーの不透明度はnoです。私がポリゴンに触れたとき、ポリゴンを描画する正しいレイヤーを取得したい。そして、3つの層が完全に満たされている。私はこれを実装しました。しかし私はそれを解決するためのより良い解決策があるかどうかわかりません。私のやり方は次のようなものです: -DrawLayer:inContextを使ってコンテンツを描く。使用したCGPathを保存します。 2. UIViewの-touchedEnded:withEventメソッドで。 CGPathContainsPoint()を使用して、タッチポイントがCGPathに含まれているかどうかを検出します。CALayerの描画コンテンツでタッチポイントが含まれているかどうかを検出するにはどうすればよいですか?
これはこれを解決するための愚かな方法かもしれません。それをより良く解決する方法を教えてもらえますか?
もう一つの質問は、CGPathContainsPoint()を使ってポイントを検出したときのCGPathです。私はCGPathをキャッシュする必要があります。 CGPathRelease()を-drawLayer:inContext:で使用すると、-touchédEnded:withEvent:でCGPathを取得できません。レイヤー内でCGPathをどこから解放すべきかわかりません。 – pyanfield
パスをキャッシュする必要はありません。図形の描画には 'CAShapeLayer'を使用してください。これには常にアクセスできる 'path'プロパティがあります。 –
はい、あなたは正しいです。ありがとう。 – pyanfield