検証環境:
Xcode 12
Swift 5.3
UIView 同士が重なっているかいないかを判定する方法について。
CGRect#intersects(_:)
メソッドで2つの CGRect が交差するかどうかを判定することができる。
UIView の Extension として以下のように追加した。
extension UIView { func overlaps(other view: UIView, in parent: UIView) -> Bool { let frame = self.convert(self.bounds, to: parent) let otherFrame = view.convert(view.bounds, to: parent) return frame.intersects(otherFrame) } }
aView と bView が重なっているかを調べる。共に parentView のサブビューである。
if aView.overlaps(other: bView, in: parentView) { // 重なっている }