[iOS] UIButton 터치 영역 늘리기

가끔 버튼이 보이는 영역에 비해서 터치 영역을 그 보다 넓게 해줘야 할 때가 있어서 이 김에 정리해두려고 한다.

어떠한 pointreceiverbounds안에 속하는지 체크하는 메소드인 point(inside:with:)를 override 하면 된다.

방법은 bounds에 속하는지 체크하는 것을 새로운 터치 영역을 생성한 뒤, 해당 터치 영역에 속하는지 체크하는걸로 바꿔주면 된다.

1
2
3
4
5
6
7
8
extension UIButton {

open override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
let margin: CGFloat = 100
let hitArea = self.bounds.insetBy(dx: -margin, dy: -margin)
return hitArea.contains(point)
}
}

@IBDesignable, @IBInspectable 을 이용하여 새로운 클래스를 만든다면 스토리보드에서도 손 쉽게 영역 조절이 가능하다.

Share