-
Notifications
You must be signed in to change notification settings - Fork 0
View, Cell의 터치범위를 넓히기
Jerry_hoyoung edited this page Mar 8, 2023
·
1 revision
프로젝트를 개발하던 도중 아래 사진처럼 작은 버튼들이 클릭이 잘 안되었습니다 🥲
그래서 여러번 터치해야하는 불편한점을 발견하였습니다
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 내에 있는지 없는지 판단하여 값을 반환합니다
📱 결과
cell또한 UIView를 상속받지만 터치 범위를 넓히고자 하는 cell은 autoSize로 설정하여 bounds의 범위를 넓혀도 적용이 되지 않았습니다 🥲

그래서 CollectionView자체의 범위를 넓히고 layoutSubView를 오버라이드하여 contentView에 inset을 주는 방식으로 구현하였습니다
override func layoutSubviews() {
super.layoutSubviews()
contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 10,
left: 0,
bottom: 10,
right: 0))
}
📱 결과