효율적인 줌 조정 알고리즘
아이폰에서 보통 두개의 손가락으로 줌을 조정할 때가 있다.
이때 핀치 스케일이라는 변수를 함수에서 던져준다.
pinch.scale 이 값이 보통 0.0 ~ 5.0 정도 나오는거 같다.
로그를 찍어보니 그렇다.
내가 하고 싶은 건 1.0 미만은 1.0으로 고정하고 4.0 이상은 2.0으로 고정하되
나머지 값은 배율로 정하기로 했다.
보통 일단 이렇게 구성한다.
if pinch.scale < 1.0 {
zoomFactor = 1.0
} else if pinch.scale > 4.0 {
zoomFactor = 2.0
} else {
zoomFactor = ((pinch.scale - 1.0) / 3) + 1.0
}
이것도 잘 돌아간다.
좀 더 짧고 잘 돌아가게 할 수 없을까?
zoomFactor = max(1.0, min(((pinch.scale - 1.0) / 3) + 1.0, 2.0)
이렇게 하면 한줄로 표시된다.
하지만 코드 추적하기 어렵다.
뒤에 오는 사람을 위해 좀 더 알아보기 쉽게 한줄 더 쓰자
let scale = ((pinch.scale - 1.0) / 3) + 1.0
zoomFactor = max(1.0, min(scale, 2.0)
이렇게 하면 보기 쉽고 깔끔한거 같다.
뭐 정답은 없지만...
눈길을 걸을 땐 발자국이 잘 찍히는지 확인하면서 가자.
뒤에 오는 사람을 위해서...
그 걸음이 쌓이면 길이 될테니까....,
댓글
댓글 쓰기