struct ContentView: View {
// ⭐️ dynamic type size
@Environment(\.dynamicTypeSize) var typeSize: DynamicTypeSize
@State private var currentTypeSize: DynamicTypeSize = .medium
let allSizes = DynamicTypeSize.allCases
var typeSizeLargeThanXL: Bool {
currentTypeSize > .xLarge
}
var body: some View {
let _ = print("environ. type size: \(typeSize)")
let _ = print("selected type size: \(currentTypeSize)")
VStack {
// ⭐️ AdaptiveHStack
AdaptiveHStack(threshold: typeSizeLargeThanXL) {
Text("Text A")
Text("Text B")
Text("Text C")
}
// ⭐️ set dynamic type size (for child views❗❗)
// ❗ 注意:這裡的設定是給「child views」的,不會往外傳遞。
.environment(\.dynamicTypeSize, currentTypeSize)
Spacer()
// Picker
Picker("Type Size", selection: $currentTypeSize) {
ForEach(allSizes, id: \.self) { size in
Text("\(size.abbreviation)")
.tag(size)
}
}.pickerStyle(.segmented)
}
}
}