-
[SwiftUI] Custom Font를 선언형으로 사용해보자공부/iOS 2022. 10. 30. 16:55
서론
먼저 기본폰트의 사용은 다음과 같은데요.
Text("안녕하세요") .font(.system(size: 28))
커스텀 폰트 또한 비슷하게 사용할 수 있습니다.
Text("안녕하세요") .font(.custom("Poppins-SemiBold", size: 28))
이것은 SwiftUI의 Font 공식 문서에서도 잘 나와있으니 참고하실 분은 들어가보시면 좋을 것 같습니다.
이렇게만 끝나면 아쉽죠..
열거형으로 커스텀 폰트를 추가해보자!
매번 번거롭게 커스텀 폰트의 이름을 타이핑하며 치기 귀찮으니 미리 만들어둡시다 ㅋㅋ
여러 글꼴 유형들을 enum으로 관리하고 해당 커스텀 글꼴에 대한 function을 추가해보죠!
1. Xcode에 폰트 추가하기
Poppins-SemiBold와 Poppins-Medium을 xcode에 추가한 모습입니다.
2. 코드 작성
저는 FontManager라는 파일을 만들어서 다음 확장을 추가했습니다.
extension Font { enum Poppins { case semibold case medium case custom(String) var value: String { switch self { case .semibold: return "Poppins-SemiBold" case .medium: return "Poppins-Medium" case .custom(let name): return name } } } static func poppins(_ type: Poppins, size: CGFloat = 17) -> Font { return .custom(type.value, size: size) } }
이런식으로 poppins라는 함수를 추가해주게 되면 코드 작성이 정말 간결해지게 됩니다!
Text("Hello, World!") .font(.poppins(.semibold, size: 50)) Text("Hello, World!") .font(.poppins(.medium))
기본폰트의 system을 쓰는 것 처럼 쓰면 되어서 너무 좋아보이네요!
enum으로 관리했기 때문에 String을 쓰면서 생길 수 있는 레퍼런스 카운팅 오버헤드를 줄여주는 것도 장점이죠 ㅎㅎ
만약 하고있는 프로젝트에서 초기에 위와 같이 세팅을 해놓으시면 편하게 쓸 수 있을 것 같습니다~
참고 사이트
https://medium.com/@sauvik_dolui/handling-fonts-in-ios-development-a-simpler-way-32d360cdc1b6
'공부 > iOS' 카테고리의 다른 글
self에서 unexpected 에러가 발생하는 이유 (0) 2023.12.01 [Swift] Date formatted, FormatStyle로 날짜 출력하기 (0) 2023.07.19 디자인 챌린지 (Asia Pacific) - Part 1 (0) 2023.03.06 Xcode 아이폰 빌드한 뒤에 LLDB 라고 하면서 빌드 안되는 문제 (0) 2022.11.28 Editing NavigationSplitView 예제에서 모르는 키워드 정리(작성중) (0) 2022.11.26