xyk blog

最近は iOS 開発の記事が多めです。

UIView 同士が重なっているかいないかを判定する方法

検証環境:
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) {
    // 重なっている
}