티스토리 뷰

iPhone 기기 별 Font Size 동적으로 적용하기

 

Record

 작성일

2019. 09. 23 (월)

Swift 버전

Swift 5

Xcode 버전

10.3

 

안녕하세요.

Fury입니다 :]

 

제가 공모전 참여를 위해서

프로젝트를 하고 있는데요.

 

하다 보니까 기계 별로 차이가 너무 심해서...

특히 저는 제 휴대폰 기종인

iPhone XS를 기준으로

코딩을 했는데

iPhone SE에서 보면 완전... 망...ㅋㅋㅋㅋ

 

그래서!!!!

오늘은 iPhone 기기별 font 사이즈 변경을 해볼 거예요.

 

 1. UILabel Extension을 활용한 Font 사이즈 조정

 

화면에 뿌려지는 Text들은 대부분 UILabel로 이루어져 있죠??

버튼도 결국은 UILabel을 상속해서

Text 속성을 가지고 있습니다!!

 

그래서 UILabel을 Extension 해서

어디에서든지 사용할 수 있도록 하는 코드를 만들어 봤어요.

 

그전에!

휴대폰 기종 별 대응이니깐,

휴대폰의 사이즈를 알아보도록 할게요.

 

  3.5 inch 4 inch 4.7 inch 5.5 inch 5.8 inch 6.1 inch 6.5 inch
기종(iPhone) 3, 4s 5, SE 6, 6s, 7, 8 6s, 6s+, 7+, 8+ X, XS XR XS MAX
height 480.0 568.0 667.0 736.0 812.0 896.0 896.0

 

제가 알아본 바로는 위와 같은데

틀릴 경우 말씀해주세요..ㅠㅠ

 

그리고 신기한 건 XR은 6.1inch고 XS Max는 6.5inch인데

화면 내의 height는 같은 896.0 이더라고요..

 

그럼, 이제 진짜 코드를 보도록 할게요.

 

 

dynimicFont라는 함수를 만들고 있어요.

size와 weight를 함께 받아서 처리하고 있습니다.

 

여기서 중요한 것은 size죠?

 

기종별로 높이를 switch 문으로 분기 처리하고 있습니다.

 

 

그리고 그 안에서 위의 UIFont를 초기화하고 있어요.

 

그리고 init의 fontSize 파라미터에

argument로 받았던(우리가 넣어 준) fontSize를 넣는데!!

기종별로 그 비율을 조절하는 겁니다.

 

 

저 같은 경우,

iPhone 3, 4S(3.5inch) 휴대폰은

XS 기준으로 준 font에서

0.7배로 사이즈를 줄이고 있어요.

 

이런 식으로 UILabel의 extensiobn을 해놓고

실제로 Label의 dynamicFont를 호출해서 사용하면 됩니다.

 

 

그러면, 여기서 Label의 text들은 휴대폰 별로 잘 조정이 될 텐데..

 

Autolayout으로 잡아준 버튼의 사이즈가 문제가 되네요..

 

위의 문제도

대응하는 코드를 만들고

다음 블로그에서 포스팅하도록 하겠습니다.

 

감사합니다 :]

댓글