문제
아래처럼 extension으로 UIFont를 정의하고 View에서 사용하고자 할 때 적용이 되지 않는다.
extension UIFont {
enum Family: String {
case Bold, Light, Medium, Regular, Thin
}
static func noto(size: CGFloat, family: Family) -> UIFont! {
return UIFont(name: "noto_sans_cjk_kr_\(family)", size: size)
}
}
text.font = UIFont.noto(size: 16, family: .Regular)
해결 방안
1. Font 파일 안에 적용하고자 하는 폰트를 넣고 Target Membership 체크를 했는지 확인한다.
2. info.plist 안에 Fonts provided by application을 만들고 아이템을 지정했는지 확인한다.
이때 아래 사진처럼 확장자 명까지 작성했는지 확인한다. (.ttf, .otf)
3. 위의 내용대로 진행했지만, UIFont가 적용이 되지 않는다면 마지막으로 폰트 이름을 확인한다.
SceneDelegate > willConnectTo 메소드에 아래의 코드를 추가해서 돌려보자.
for fontFamily in UIFont.familyNames {
for fontName in UIFont.fontNames(forFamilyName: fontFamily) {
print(fontName)
}
}
콘솔 창에서 폰트 이름이 파일명이 아닌 NotoSansCJKkr-Regular 로 되어있는 것을 확인할 수 있다.
이름을 제대로 바꿔주면 폰트가 적용된다.
extension UIFont {
enum Family: String {
case Bold, Light, Medium, Regular, Thin
}
static func noto(size: CGFloat, family: Family) -> UIFont! {
return UIFont(name: "NotoSansCJKkr-\(family)", size: size)
}
}
text.font = UIFont.noto(size: 16, family: .Regular)
'iOS > iOS' 카테고리의 다른 글
[iOS] leading, trailing과 left, right (0) | 2022.09.30 |
---|---|
[iOS] Lottie Animation Color 수정(ColorValueProvider) (0) | 2021.11.30 |
[iOS] 화면 터치, Return/Enter 시 키보드 내리기(Hide keyboard) (0) | 2021.11.15 |
[iOS] UISheetPresentationController로 Bottom Sheet 띄우기 (0) | 2021.11.15 |
[iOS] TextField 첫 영문자를 소문자로 시작하기 (0) | 2021.11.15 |
댓글