私はこれを数学的に行う方法を考え出しました!基本的に三角法を使用して、交差点の2つの「円弧」に必要な角度を求め、これらの2つの円弧からなるベジェパスを作成します。次に、ベジェパスを重ねると、完了です!もし誰かが興味があれば私のコードです:
注:これは、両方の円が同じ半径を持つと仮定し、円形であるように私の画像ビューをクリップしました!
let circlePath = UIBezierPath()
let left_circle_center = left_image_view.center.x
let right_circle_center = right_image_view.center.x
let radius = left_image_view.frame.width/2
let angle = acos((left_circle_center - right_circle_center)/radius)
intersection_Path.addArc(withCenter: right_circle_center, radius: radius, startAngle: CGFloat(Double.pi-angle), endAngle: CGFloat(Double.pi+angle), clockwise: true)
intersection_Path.addArc(withCenter: left_circle_center, radius: radius, startAngle: CGFloat(-angle), endAngle: CGFloat(angle), clockwise: true
let intersection_area = CAShapeLayer()
intersection_area.path = intersection_Path.cgPath
intersection_area.borderColor = ...
intersection_area.strokeColor = ...
intersection_area.fillColor = ...
self.view.layer.addSublayer(intersection_area)
明確化の質問:「UIImageViews」になった2つの「UIViews」の交差点についてお話ししていますか?または、2つの 'UIImageViews'に含まれる' UIImages'の共通部分は? – dfd
これは、画像ビューで任意の画像を扱うのが難しくなります(そして、それらの画像の背景色が白か透明か、既に適切なサイズに調整されているかどうかなど、多くの質問をします)。しかし、ベン図のサークルのような2つの規則的な形の交差点を探している場合、数学はかなり簡単です。 – Rob
ImageViewsになったのは2つのUIViewでしたが、ジオメトリを使用して行う方法が見つかりました! – jasperthedog