개발을 진행하다보면 상당히 많은 사이즈의 디바이스에 대응해야하는 상황이 생긴다.
View 컴포넌트들은 퍼센트로 계산해서 어떻게어떻게 잘 그려놓을 수 있지만
이에 따른 text는 짤리는 경우가 많다.
그래서 위의 코드 처럼 픽셀단위로 케이스를 나누기도하지만 이경우에도 텍스트의 길이마다 전부 다 대응하기 어렵다
텍스트를 잘리지 않게 나타내기 위한 방법 중에는
첫번째로
adjustsFontSizeToFitWidth를 사용해서 autoresizing을 해주는 방법이 있다.
adjustsFontSizeToFitWidth
먼저 adjustsFontSizeToFitWidth를 잠깐 살펴보면,
- 제목 문자열을 라벨의 사각형 바운드에 맞추기 위해 텍스트의 글꼴을 줄일지를 결정하는 불린 값
설명을 조금 더 보자면
- 라벨은 텍스트를 그릴때 특정 폰트를 사용해서 그리고, 이 텍스트가 라벨바운드를 넘어가면 라벨의 fontsize를 텍스트가 딱 맞을때 까지 또는 최소 사이즈로 줄인다. 디폴트 값은 false 이고, minumumScaleFactor 프로퍼티로 최소 스케일을 지정할 수 있다. single-line 라벨에서만 작동한다.
이 adjustsFontSizeToFitWidth를 사용해본 사람들은 알겠지만
adjustsFontSizeToFitWidth는 텍스트가 바운드를 넘어가면 맞을 때까지 font size를 줄이거나 크기를 최소로 줄인다.
그렇게 해서 font size가 엄청나게 작아져 버린다.
당연한 얘기지만 만약 텍스트가 잘려질 만큼 충분하지 않다면
당연히 adjustsFontSizeToFitWidth는 동작하지 않는다.
만약 Label의 길이 및 높이를 텍스트와 딱 맞게 하고싶다면 sizeToFit 을 사용하면 된다.
sizeToFIt(:)
- 리시버 뷰를 리사이징하고 움직여서 서브뷰를 넣어준다.
- 현재 뷰의 크기를 가장 적절하게 사용하도록 조정할 때 호출한다. 특정 UIKit 뷰들은 자체적인 필요에 따라 크기를 조절하는데, 경우에 따라 뷰가 상위뷰가 없다면 화면 경계에 맞게 크기를 조절할 수 있다. 따라서 주어진 뷰를 상위뷰의 크기에 맞게 조정하려면 sizeToFit()을 호출하기 전에 상위뷰에 추가해야 한다.
minimunScaleFactor
- 레이블텍스트의 최소 비율
- adjustsFontSizeToFitWidth 가 true일 때 지정한 값보다 텍스트의 스케일을 줄이지 않는다.
즉, 위 사진 처럼 adjustFontSizeToFitWidth를 true로 놓아도 죽어라 줄어드는 게 아니라 일정 scale 까지만 줄어든다.
물론 그렇게 하면 저렇게 텍스트가 잘리게 되는데...
어떤 상황에서 사용하는 것이 적절한지 아직 잘 모르겠다.
Full 테스트 코드 : https://github.com/SooHoon95/iOS_Study/tree/main/Test/Fontsizing%20Test/Fontsizing%20Test
출처
'iOS' 카테고리의 다른 글
객체지향 프로그래밍적 사고 (0) | 2024.08.13 |
---|---|
.DS_Store 파일이란? (0) | 2024.04.16 |
[iOS][Swift][UIKit] UIPickerView의 그라데이션넣기(gradient). (0) | 2023.09.04 |
[iOS][fastlane] 자동배포, testFilght 올리기 (0) | 2023.09.03 |
[iOS] FlexLayout, PinLayout 이용해서 뷰 그리기 (0) | 2023.06.17 |