🖼️
【SwiftUI】Dynamic Typeに合わせてカスタム画像をスケーリングする
✅ コード
struct SampleView: View {
@ScaledMetric(relativeTo: .body)
private var imageHeight = 17 // 初期値
var body: some View {
HStack(spacing: 2) {
Image(.githubMark)
.resizable()
.scaledToFit()
.frame(height: imageHeight)
Text("Test User")
.font(.body)
}
}
}
上記のコードでは、@ScaledMetric
を使用してimageHeight
を定義している。これにより、ユーザーがDynamic Typeの設定を変更した際に、画像の高さが自動的に調整される。
relativeTo: .body
を指定することで、.body
テキストスタイルに基づいてスケーリングされる。
@ScaledMetric
について
📝 -
@ScaledMetric
は、数値プロパティをDynamic Typeに対応させるためのプロパティラッパー。 - 初期値を基準として、ユーザーがテキストサイズを変更すると、SwiftUIが自動的に数値をスケーリングする。
-
relativeTo
パラメータを使用することで、スケーリングの基準となるテキストスタイル(例:.body
、.title
など)を指定できる。
Discussion