[TIL] 버튼 터치영역 늘리기

Eden·2025년 8월 29일

1. 개념

  • UIButton의 실제 크기는 작지만 터치하기 불편할 수 있음.
  • ExtendedButton터치 영역을 확장해서 사용자가 더 쉽게 누를 수
    있도록 함.
  • UI는 그대로 두고 터치 감지 범위만 넓힘.

2. 코드 설명

class ExtendedButton: UIButton {
    var touchAreaInset: CGFloat = -10

    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        let area = bounds.insetBy(dx: touchAreaInset, dy: touchAreaInset)
        return area.contains(point)
    }
}

주요 포인트

  1. touchAreaInset
    • 기본값: -10
    • 음수 값 → 터치 영역이 넓어짐\
    • 양수 값 → 터치 영역이 줄어듦
  2. point(inside:with:)
    • 실제 버튼 bounds 대신 확장된 영역을 터치 감지 범위로 사용.
  3. insetBy(dx:dy:)
    • 원래 영역에 여백을 더하거나 줄이는 메서드.

3. 사용 방법

let button = ExtendedButton(type: .system)
button.setTitle("확장 버튼", for: .normal)
button.touchAreaInset = -20   // 터치 영역 20px 확장
  • 화면에 보이는 버튼 크기는 그대로.
  • 실제 터치 가능한 영역은 20px 더 크게 적용됨.

4. 언제 쓰면 좋은가?

  • 네비게이션 바 아이콘 버튼 (예: 닫기, 뒤로가기)
  • 작은 아이콘 버튼 (예: 체크, 좋아요)
  • 사용자 실수를 줄이고 UX 향상 필요할 때

정리 - ExtendedButton은 작은 버튼을 누르기 쉽게 해주는
유틸리티. - touchAreaInset 값만 조정하면 유연하게 터치 영역 관리 가능.

profile
iOS Dev

0개의 댓글