Open onmyway133 opened 2 years ago
We should use Dynamic Font Type as much as possible, as per Typography guide and https://www.iosfontsizes.com/
But in case we have to use a specific font, we can scale it with UIFontMetrics
UIFontMetrics
import SwiftUI import UIKit extension Font { static func system( scaledSize size: CGFloat, weight: Font.Weight = .regular, design: Font.Design = .default ) -> Font { Font.system( size: UIFontMetrics.default.scaledValue(for: size), weight: weight, design: design ) } }
Then instead of
Text("Hello World") .font(.system(size: 16))
we can use a scaled version
Text("Hello World") .font(.system(scaledSize: 16))
For dynamically updating, we can use a ViewModifier that listens to sizeCategory
ViewModifier
sizeCategory
struct ScaledFont: ViewModifier { @Environment(\.sizeCategory) var sizeCategory var size: CGFloat func body(content: Content) -> some View { let scaledSize = UIFontMetrics.default.scaledValue(for: size) return content .font(.system(size: scaledSize)) } }
We should use Dynamic Font Type as much as possible, as per Typography guide and https://www.iosfontsizes.com/
But in case we have to use a specific font, we can scale it with
UIFontMetrics
Then instead of
we can use a scaled version
For dynamically updating, we can use a
ViewModifier
that listens tosizeCategory
Read more