如何覆盖日期选择器的 iOS 暗模式样式
How to override iOS dark mode style for datepicker
如您所见,日期选择器中的选定值是白色的。如果我更改日期,它将不可见。这是 iOS 深色模式的屏幕截图。有没有办法覆盖默认样式。我尝试了以下方法:
.date-picker {
color: #000000;
.ns-dark & {
color: #000000;
}
}
这是黑色背景时的样子
使用 UIViewController 的 UIUserInterfaceStyle 属性 overrideUserInterfaceStyle 改变控制器的界面风格。
class TestViewController: UIViewController {
@IBOutlet weak var datePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = .dark
datePicker.backgroundColor = .black
} else {
datePicker.backgroundColor = .white
}
}
}
问题是我无法覆盖日期选择器的颜色。我也无法覆盖模态的背景颜色。
我需要将 <page>
标签添加到我的模式中。在那里我可以添加一个 class 这样我就可以在黑暗模式下更改背景颜色。所以它看起来像这样:
<Page class="background-color-modal">
<DockLayout class="modal">
<FlexboxLayout class="timeDateDetails">
<time-modal :selected-time="selectedTime"
:time="$props.time" @updateTime="updateTime"/>
</FlexboxLayout>
</DockLayout>
</Page>
<style lang="scss" scoped>
.background-color-modal {
background-color: $white;
color: $dark;
.ns-dark & {
background-color: $dark-dark;
color: $dark-white
}
}
.modal {
background-color: $white;
color: $dark;
.ns-dark & {
background-color: $dark-dark;
color: $dark-white
}
}
</style>
如您所见,日期选择器中的选定值是白色的。如果我更改日期,它将不可见。这是 iOS 深色模式的屏幕截图。有没有办法覆盖默认样式。我尝试了以下方法:
.date-picker {
color: #000000;
.ns-dark & {
color: #000000;
}
}
这是黑色背景时的样子
使用 UIViewController 的 UIUserInterfaceStyle 属性 overrideUserInterfaceStyle 改变控制器的界面风格。
class TestViewController: UIViewController {
@IBOutlet weak var datePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = .dark
datePicker.backgroundColor = .black
} else {
datePicker.backgroundColor = .white
}
}
}
问题是我无法覆盖日期选择器的颜色。我也无法覆盖模态的背景颜色。
我需要将 <page>
标签添加到我的模式中。在那里我可以添加一个 class 这样我就可以在黑暗模式下更改背景颜色。所以它看起来像这样:
<Page class="background-color-modal">
<DockLayout class="modal">
<FlexboxLayout class="timeDateDetails">
<time-modal :selected-time="selectedTime"
:time="$props.time" @updateTime="updateTime"/>
</FlexboxLayout>
</DockLayout>
</Page>
<style lang="scss" scoped>
.background-color-modal {
background-color: $white;
color: $dark;
.ns-dark & {
background-color: $dark-dark;
color: $dark-white
}
}
.modal {
background-color: $white;
color: $dark;
.ns-dark & {
background-color: $dark-dark;
color: $dark-white
}
}
</style>