Jiwift

[iOS/Swift] UILabel 글자 크기 자동 변경 "Autoshrink" 본문

iOS Dev/UIKit

[iOS/Swift] UILabel 글자 크기 자동 변경 "Autoshrink"

지위프트 2022. 11. 3. 22:02
반응형

Autoshrink

Storyboard를 이용한 레이아웃을 구성하면 Label이 "내용 내용 내ㅇ..." 이런 식으로 표현이 되는 상황이 생긴다. Label이 들어가는 공간이 좁아서 크기가 작아지지만 폰트 크기는 변하지 않아서 생기는데, 그것을 해결하기 위한 기능이다.

 

위 사진을 보면 화면이 큰 13같은 경우는 Label이 Storyboard에서 설정한 크기로 출력되기 때문에

서로 다른 옵션을 주어도 글씨가 제대로 표시된다.

반면 12 mini 같은 경우는 옵션에 따른 다른 결과가 나오게 된다.

 

테스트는 constraint를 적용 여부와 Autoshrink 적용 여부를 볼 것이다.

 

1. constraint : X, Autoshrink : X

둘 다 적용하지 않았기 때문에 Autoshrink는 당연하고 Label 크기도 12 mini 화면에 맞지 않는 모습을 보인다.

2. constraint : X, Autoshrink : O

Autoshrink는 적용되었지만 어플을 실행하면 Label 크기는 변경되지 않아 적용 여부를 모른다. storyboard에서 마우스로 Label 사이즈를 줄이고 늘려보면 Autoshrink 적용 효과를 확인할 수 있다.

3. constraint : O, Autoshrink : X

constraint가 적용돼서 Label 크기는 12 mini에 맞게 변경되었지만 Autoshrink가 없어서 글씨가 안 보이는 현상이 생긴다.

4. constraint : O, Autoshrink : O

두 옵션이 모두 적용되서 화면에 Label 크기와 폰트 사이즈가 맞게 나오는 모습을 볼 수 있다.

Storyboard에서 마우스로 크기를 조절해보면 constraint 여부와는 상관없이 Autoshrink는 적용이 되지만 애플리케이션이 실행되고 적용되게 하려면 constraint를 이용한 적용 법이 좋아 보인다.

 

1. 먼저 적용을 원하는 Label에게 constraint를 적용해줍니다.

 

 

2. 상단 메뉴에서 표시된 아이콘을 클릭하고 중간에 Autoshrink를 찾아서 옵션을 적용해줍니다.

Autoshrink 옵션

Minimum Font Scale = 0~1까지 수를 입력해서 얼마나 줄어들지 결정 0.5라면 50%까지 줄어든다.

Minimum Font Size = 폰트 사이즈가 얼마나 줄어들지 결정

Tighten Letter Spacing = 자간을 줄이는 것인데, 기본 시스템 폰트를 사용하는 경우 영향이 없다.

결과

반응형