효율적인 줌 조정 알고리즘

아이폰에서 보통 두개의 손가락으로 줌을 조정할 때가 있다.

이때 핀치 스케일이라는 변수를 함수에서 던져준다.

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)

이렇게 하면 보기 쉽고 깔끔한거 같다.

뭐 정답은 없지만...


눈길을 걸을 땐 발자국이 잘 찍히는지 확인하면서 가자.

뒤에 오는 사람을 위해서...

그 걸음이 쌓이면 길이 될테니까....,

댓글

이 블로그의 인기 게시물

한글 2010 에서 Ctrl + F10 누르면 특수문자 안뜰 때

아이폰에서 RFID 사용하는 방법

맥 화면이 안나올때 조치방법