質問: CAShapeLayerにUIBezierPath.FromOval()で円形(FillColorで塗り)を描画し、UIView.LayerにAddSublayerしています。 この時、タッチ領域は矩形状にしか判定できないのですが、円形にタッチ領域を狭めることはできないでしょうか? CGImageのアルファ値を見るという記事も見たのですが、CAShapeLayer.ContentsがnullなのでCGImageが取得できませんでした。 解決方法はあるでしょうか?Xamarinの質問ですが、swift, objective-cでも構いません。 ◆環境 Visual Studio 2019 Xamarin 16.1 Xamarin.iOS 12.10 実機iPadのiOS 12.3
回答: こんにちは。 どこかでタッチ判定をすでに行っていると仮定します。 CGShapeLayerにpathが入っていると思いますが、そのCGPath型には当たり判定用の関数が用意されています。 contains(_:using:transform:) これを使ってタッチ判定を行ってください。