Skip to content

View, Cell의 터치범위를 넓히기

Jerry_hoyoung edited this page Mar 8, 2023 · 1 revision

서론..

프로젝트를 개발하던 도중 아래 사진처럼 작은 버튼들이 클릭이 잘 안되었습니다 🥲

그래서 여러번 터치해야하는 불편한점을 발견하였습니다 ‼️

스크린샷 2023-02-09 오전 1 44 03

스크린샷 2023-02-09 오전 1 40 24


UIView의 터치 범위를 넓히는 방법

UIView에서 사용하는 func point(inside point: CGPoint, with event: UIEvent?) 를 이용합니다

Point(inside: with:) receiver에 지정된 포인트가 있는지 여부를 판단하고 Bool값을 반환

point메서드는 현재의 수신기가 받은 point가 해당 뷰안에 수신되었는지 확인을 할 수 있는 것입니다.

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

그리고 insetBy 메서드를 통해 해당 view의 bounds를 넓히고 수신기에 받은 포인트가 bounds 내에 있는지 없는지 판단하여 값을 반환합니다

📱 결과

AnyConv com__화면 기록 2023-02-09 오전 2 32 03


Cell의 터치 범위를 넓히는 방법

cell또한 UIView를 상속받지만 터치 범위를 넓히고자 하는 cell은 autoSize로 설정하여 bounds의 범위를 넓혀도 적용이 되지 않았습니다 🥲

스크린샷 2023-02-05 오후 1 13 58

그래서 CollectionView자체의 범위를 넓히고 layoutSubView를 오버라이드하여 contentView에 inset을 주는 방식으로 구현하였습니다

override func layoutSubviews() {
    super.layoutSubviews()
    contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 10,
                                                                 left: 0,
                                                                 bottom: 10,
                                                                 right: 0))
}

📱 결과

AnyConv com__화면 기록 2023-02-09 오전 2 51 35


Clone this wiki locally