Return Value 戻り値
A view that sets the color scheme.
Availability 有効性
Technology
func preferredColorScheme(_ colorScheme: ColorScheme
?) -> some View
A view that sets the color scheme.
colorScheme
The preferred color scheme for this view.
Use one of the values in Color
with this modifier to set a preferred color scheme for the nearest enclosing presentation, like a popover, a sheet, or a window. The value that you set overrides the user’s Dark Mode selection for that presentation. In the example below, the Toggle
controls an is
state variable, which in turn controls the color scheme of the sheet that contains the toggle:
private var isPresented = false
private var isDarkMode = true
var body: some View {
Button("Show Sheet") {
isPresented = true
}
.sheet(isPresented: $isPresented) {
List {
Toggle("Dark Mode", isOn: $isDarkMode)
}
.preferredColorScheme(isDarkMode ? .dark : .light)
}
}
If you apply the modifier to any of the views in the sheet — which in this case are a List
and a Toggle
— the value that you set propagates up through the view hierarchy to the enclosing presentation, or until another color scheme modifier higher in the hierarchy overrides it. The value you set also flows down to all child views of the enclosing presentation.
A common use for this modifier is to create side-by-side previews of the same view with light and dark appearances:
struct MyView_Previews: PreviewProvider {
static var previews: some View {
MyView().preferredColorScheme(.light)
MyView().preferredColorScheme(.dark)
}
}
If you need to detect the color scheme that currently applies to a view, read the color
environment value:
private var colorScheme (\.colorScheme)
var body: some View {
Text(colorScheme == .dark ? "Dark" : "Light")
}