Apple의 UIFont가 제공하는 preferredFont을 사용하면 따로 굵기를 지정할 수 없고 지정된 font만 사용해야 합니다.
반대로 systemFont를 사용한다면 Dynamic Type (Automatically adjusts font: 사용자 설정에 따른 폰트 크기 변경)이 동작하지 않습니다.
extension을 사용해서 굵기를 지정해도 Dynamic Type을 지원하는 method를 구현할 수 있습니다.
extension UIFont {
static func preferredFont(for style: TextStyle, weight: Weight) -> UIFont {
let metrics = UIFontMetrics(forTextStyle: style)
let desc = UIFontDescriptor.preferredFontDescriptor(withTextStyle: style)
let font = UIFont.systemFont(ofSize: desc.pointSize, weight: weight)
return metrics.scaledFont(for: font)
}
}
adjustsFontForContentSizeCategory = true
위에서 만든 method를 사용해도 크기 변화가 없다면, 스토리보드의 Dynamic Type - Automatically adjusts Font 체크를 확인해야 하고, 스토리보드에서 확인할 수 없다면 아래 코드를 추가합니다.
Label.adjustsFontForContentSizeCategory = true