티스토리 뷰

iOS/SwiftUI

[SwiftUI] - Custom Font 적용

강철곰탱이 2024. 3. 19. 20:56

 

프로젝트를 진행할 때 Font를 외부에서 가져와 사용해야 할 때가 많다.

나도 이번 프로젝트를 진행하면서 외부 Font를 다운받아 Xcode에 적용하여 사용했다 ㅎㅎㅎ

 

1️⃣ Font 다운받기

 

"Pretendard" Font를 아래의 사이트에서 다운받았다.

 

 

눈누

프리텐다드 - 길형진 (orioncactus)

noonnu.cc

 

 

2️⃣ 다운로드한 Font Xcode에 넣기 

 

사이트에서 다운받은 파일을 압축 해제하면 다음과 같은 otf 파일을 확인할 수 있다.

 

 

 

otf 파일들을 모두 Xcode안에 넣어준다. 

나는 [Resource - Fonts] 폴더 안에 넣어주었다.

 

📍 주의할 점! 

 

"Add to targets" 를 꼭 체크해줘야 한다.

target 설정을 하지 않으면 추가한 Font를 Xcode에서 인식하지 못하기 때문이라고 한다,,,

 

 

 

넣어주면 다음과 같이 폴더 안에 otf 파일이 잘 들어간 걸 확인할 수 있다.

 

 

 

3️⃣ info.plist에 Font 추가

 

SwiftUI는 UIKit와 달리 info.plist가 프로젝트 생성 시 보이지 않는 거!!!

=> 프로젝트를 만들면 info.plist 파일이 생성되는 건 맞지만, 노출되지 않고 파일 내용이 변경된 후에 노출된다고 한다.

 

그럼 info.plist 어떻게 수정하냐?!!?

[TARGETS - info]에서 수정하면 된다 ㅎㅎ

 

 

여기서 + 버튼을 누르고 key에 "Fonts provided by application"를 입력해 준다. 

그리고 value에는 Font 파일 목록들을 확장자 포함해서 작성하면 적용된다.

 

 

 

4️⃣ Extension으로 관리

 

다음과 같이 열거형으로 만들어주고 pretendard 함수를 사용해 간편하게 사용할 수 있도록 했다.

 

extension Font {
    enum PretendardWeight {
        case black
        case bold
        case heavy
        case ultraLight
        case light
        case medium
        case regular
        case semibold
        case thin
        
        var value: String {
            switch self {
            case .black:
                return "Black"
            case .bold:
                return "Bold"
            case .heavy:
                return "ExtraBold"
            case .ultraLight:
                return "ExtraLight"
            case .light:
                return "Light"
            case .medium:
                return "Medium"
            case .regular:
                return "Regular"
            case .semibold:
                return "SemiBold"
            case .thin:
                return "Thin"
            }
        }
    }

    static func pretendard(_ weight: PretendardWeight, size fontSize: CGFloat) -> Font {
        let familyName = "Pretendard"
        let weightString = weight.value

        return Font.custom("\(familyName)-\(weightString)", size: fontSize)
    }
}

 

 

5️⃣ 사용방법

 

기존에 사용하던 system Font 사용과 비슷하도록 구현하였다.

 

  • system Font
.font(.system(size: 24, weight: .semibold))

 

  • custom Font
.font(.pretendard(.semibold, size: 24))

 

 

이렇게 함으로써 간편하게 Custom Font를 가져와 사용할 수 있다~~~~~

'iOS > SwiftUI' 카테고리의 다른 글

[SwiftUI] - ViewModel에서 @State 사용시 문제점  (0) 2024.04.18
[SwiftUI] - NavigationLink Action 추가  (0) 2024.04.07
[SwiftUI] - ObservableObject 예제  (0) 2024.03.12
[SwiftUI] - Combine 예제  (0) 2024.03.11
[SwiftUI] - Combine이란?  (0) 2024.03.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함