1pt는 1포인트 1인치를 72로 나눈값이 1pt = 0.3527입니다
1px는 1픽셀로 이미지를 이루는 가장 작은 단위의 점입니다.
Window & Mac 디스플레이
- Windows에서 9pt = 12px
- Mac 에서 9pt = 9px
- windows는 화면 해상도를 95dpi를 쓰지만, mac에서는 72dpi를 사용합니다.
- 즉, 1인치당 96개의 점이 있는 윈도우와, 1인치당 72개의 점이있는 맥의 차이입니다.
Retina 디스플레이
- 레티나가 아닌 디스플레이에서는 1pt = 1px이 되는데, 레티나에서는 iPhoneX, 플러스+ 종류의 Device는 3x렌더링을 하게 되는데 1pt = 9px이라고 생각하고
- iPhoneX, 플러스+를 제외한 Device는 2x로 렌더링을 하게되서 1pt = 4px라고 됩니다.
UIKit을 사용할때 좌표 시작점은 좌측상단 (0, 0)입니다.
- Quartz 2D는 좌측하단 (0, 0) 입니다.
CGRect, CGSize, CGPoint
먼저 Frame 을 알려면 CGRect와 CGSize의 차이와, CGPoint에 대해서 알아야 합니다
- CGRect
- 2차원 좌표계의 점을 포함하는 구조체
- 1은 x, 2는 y
- CGsize
- 너비와 높이 값을 포함하는 구조체.
- 사각형으로 나타내지곤 하지만 CGSize는 너비와 높이의 값 입니다.
- 실제로 사각형으로 간주되지 않습니다.
- CGPoint
- 사각형의 위치와 크기를 포함하는 구조체
- 이것은 CGsize, CGRect와는 다르게 "사각형"으로 간주됩니다.
- Origin 과 너비, 높이를 포함하고 있습니다
- 따라서 표현될때는 var rectangle = CGRect(origin: CGpoint(x: 0, y: 0), size: CGSize(width: 50, height: 30)) 이런식으로 표현될수 있습니다.
Frame and Bounds
- Frame
- SuperView(상위뷰)의 좌표시스템 안(기준)에서 View의 위치와 크기를 나타냅니다
- 상위뷰는 한단계위의 뷰를 의미합니다
- 프레임의 x, y값은 상위뷰의 위치 안에서의 View의 위치와 크기를 나타냅니다
- Bounds
- View의 위치와 크기를 자신만의 좌표시스템 안에서 나타냅니다.
- 바운드의 위치를 변경하는 것은 해당위치에서 뷰를 다시그리라는 의미가 된다.
- 여기서 위치는 뷰의 제한된 크기는 없다고 볼수있다. 무슨 말인가 하면 뷰가 100 x 100일때 이미지가 200 x 200 이면 이미지가 다시그려지는 위치에 따라서 뷰에 이미지가 보이는 그림이 달라진다는 것이다.
- 만약 큰그림이 있고 뷰가 큰그림의 한지점을 보여준다고 했을때 뷰는 가만히 있는 상태에서 바뀐 위치에 대해 큰그림이 다시그려지면 마치 뷰가 그림을 움직인것 같은 상태가 된다.
Scailing
- ScaleToFill : 원본 이미지 비율에 상관 없이 ImageView의 영역에 들어가는것.
- AspectFit : 원본 이미지 비율을 유지하면서 ImageView의 영역에서 이미지를 모두 표시하는것.
- AspectFill : 원본 이미지 비율을 유지하지만 ImageView의 영역에 가득차게 표시하는데, 전체 이미지가 나오지 않고 비율을 유지하느라 짤릴 수도 있습니다.
https://jinshine.github.io/ 많은 부분을 참고했습니다
'IOS > Swift' 카테고리의 다른 글
[TIL] Swift. Type Casting(feat. is, as) (0) | 2020.10.18 |
---|---|
[TIL] Swift. GCD (Grand Central Patch) (0) | 2020.10.17 |
[TIL] Swift. awakeFromNib (0) | 2020.10.14 |
[TIL] Swift. ViewController LifeCycle (0) | 2020.10.12 |
[TIL] Swift. ARC ( Automatic Reference Counting ) (0) | 2020.10.09 |