효율적인 줌 조정 알고리즘
아이폰에서 보통 두개의 손가락으로 줌을 조정할 때가 있다. 이때 핀치 스케일이라는 변수를 함수에서 던져준다. 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) 이렇게 하면 보기 쉽고 깔끔한거 같다. 뭐 정답은 없지만... 눈길을 걸을 땐 발자국이 잘 찍히는지 확인하면서 가자. 뒤에 오는 사람을 위해서... 그 걸음이 쌓이면 길이 될테니까....,