iOS 앱을 개발하다보면, 다국어 지원을 위해 사용자가 설정한 언어에 따라 앱의 텍스트를 변환해야 할 때가 있습니다. 이 중에서도 가장 많이 사용하는 요소 중 하나는 레이블의 폰트입니다. 사용자가 설정한 언어에 따라 폰트를 동적으로 변경하기 위해서는 FontBlaster라는 Swift 라이브러리를 사용할 수 있습니다.
1. FontBlaster 라이브러리 설치
먼저, FontBlaster 라이브러리를 프로젝트에 추가해야 합니다. 이를 위해서는 Podfile
에 다음 줄을 추가하고, 터미널에서 pod install
명령을 실행합니다.
pod 'FontBlaster'
2. 사용자가 설정한 언어에 따른 폰트 변경
FontBlaster를 사용하여 레이블의 폰트를 사용자가 설정한 언어에 따라 변경하는 방법은 다음과 같습니다.
import FontBlaster
class ViewController: UIViewController {
@IBOutlet weak var titleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// 사용자가 설정한 언어에 따른 폰트 변경
if let font = FontBlaster.fontWithName("NanumSquareRoundOTFEB") {
titleLabel.font = UIFont(descriptor: font.fontDescriptor, size: 20)
}
}
}
위의 예제에서는 NanumSquareRoundOTFEB
폰트를 사용자가 설정한 언어에 따라 적용하고 있습니다. 만약 다른 폰트를 사용하고 싶다면, 해당 폰트의 이름을 변경해주어야 합니다.
3. 사용자 언어 변경 감지
앱 내에서 언어 변경이 발생할 경우, FontBlaster의 캐시를 갱신해야 합니다. 예를 들어, AppDelegate
에서 다음과 같이 캐시를 갱신하는 메소드를 추가할 수 있습니다.
import FontBlaster
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
// ...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// ...
// 사용자 언어 변경 감지
NotificationCenter.default.addObserver(self, selector: #selector(languageDidChange), name: NSLocale.currentLocaleDidChangeNotification , object: nil)
return true
}
@objc func languageDidChange() {
FontBlaster.refreshFonts()
}
}
위의 예제에서는 languageDidChange
메소드를 사용하여 언어 변경 시 FontBlaster의 캐시를 갱신하고 있습니다. 이렇게 함으로써, 사용자가 언어를 변경할 때마다 폰트가 실시간으로 변경될 수 있습니다.
마무리
위의 방법을 따라 Swift FontBlaster를 사용하여 레이블의 폰트를 사용자가 설정한 언어에 따라 동적으로 변경할 수 있습니다. 이를 통해 다국어 지원을 간편하게 구현할 수 있고, 사용자에게 더 좋은 사용자 경험을 제공할 수 있습니다.
참고 자료: FontBlaster GitHub 저장소