이 내용은 Swift관련 책에 있는 Tip이다.
흔히들 현업에 있는 개발자들은 어림잡아 아는 사람들이 많을 것 같은 개념인데 나는 나이가 들어 그런지 자꾸 헷갈리고 까먹는다.
@2x, @3x를 이해하기 위해서는 먼저 포인트(Point) 단위에 대해서 이해해야 합니다. 포인트는 애플에서 사용하는 좌표계의 추상적 단위로,
아이폰 모델의 파편화를 방지하기 위해 도입되었습니다. 포인트 기반으로 작업된 좌표계는 각 디바이스의 디스플레이가 가지는 스케일 팩터(Scale Factor)에 따라 렌더링된 실제 Pixel 단위로 변환됩니다.
여기서 말하는 스케일 팩터라 1 Point를 구성하는 픽셀의 개수를 의미하는 것으로, 디스플레이의 종류에 따라 달라집니다.
Non-Retina일 경우에는 1x이며, 일반적인 레티나 디스플레이는 2x의 스케일 팩터를 가지죠.
이에 따라 1 Point는 Non-Retina에서 1픽셀이지만 Retina에서는 4픽셀(가로2픽셀 X 세로2픽셀)로 처리됩니다.
똑같은 1 Point로 정의 했더라도 디바이스에 따라 실제 픽셀값은 달라진다는 겁니다.
아이폰, 아이패드에서 사용하는 레티나 디스플레이는 고도의 선명한 화면을 위해 가로 세로 모두 4개의 픽셀을 모아 하나의 픽셀처럼 처리합니다.
이런 특성으로 인해 앱을 픽셀 단위로 직접 제어할 경우 레티나 디스플레이 에서는 눈에 보이지도 않을 만큼 작게 표현되는 문제가 생깁니다.
이를 해결하기 위해 설계 시에는 추상 단위인 Point로 화면을 구성하고, 실제로 사용할 때에는 디스플레이의 스케일 팩터에 따라 실제 픽셀의 크기로 렌더링하여 사용하는 겁니다.
이렇게 처리된 실제 해상도를 Rendered Pixel이라고 부릅니다.
말하자면 @2x, @3x란 해당 이미지를 렌더링하여 표현할 때 적용할 스케일 팩터를 가리킨다고 할 수 있습니다.
-꼼꼼한 재은씨의 스위프트 실전편 중-