SwiftUI - 制作适合明暗模式的按钮
SwiftUI - Making a button suitable for light and dark mode
HStack(spacing: 15) {
ForEach(0..<button.count, id: \.self) {button in
Button(action: {
self.buttonContinue = button
}) {
Text("\(self.button[button])").padding(.vertical, 12.5)
.padding(.horizontal, 120)
.foregroundColor(.white)
.background(self.buttonContinue == button ? Color.black: Color.gray)
.clipShape(Capsule())}}
}
我已经使用这段代码创建了一个继续按钮。在浅色模式下,颜色效果很好(从灰色背景和白色文本到黑色背景和白色文本),但是,当我切换到深色模式时,单击时按钮的背景从灰色消失为无。无论如何,我可以在深色模式下将按钮的背景更改为白色(因为当我尝试过时我只能更改文本颜色)?
在你的情况下你可以简单地做:
Text("Button \(button)")
.padding(.vertical, 12.5)
.padding(.horizontal, 120)
.foregroundStyle(.background)
.background(2 == button ? Color.primary: Color.secondary)
.clipShape(Capsule())
或更多控制用途:
@Environment(\.colorScheme) var colorScheme
var textColor: Color {
if colorScheme == .dark {
return Color.white
} else {
return Color.black
}
}
或关注@loremipsum 并在资源中定义您自己的颜色
您可以在 Color(uiColor:) init 中使用 UIColor,或者创建您自己的具有任何外观(浅色)和深色模式颜色的颜色资产。使用 UIColor 如下:
Text("\(self.button[button])").padding(.vertical, 12.5)
.padding(.horizontal, 120)
.foregroundColor(.white)
// See below for the appropriate inits:
.background(self.buttonContinue == button ? Color(uiColor: .labelColor): Color(uiColor: .systemGrayColor)
.clipShape(Capsule())}}
或使用颜色资源:
HStack(spacing: 15) {
ForEach(0..<button.count, id: \.self) {button in
Button(action: {
self.buttonContinue = button
}) {
Text("\(self.button[button])").padding(.vertical, 12.5)
.padding(.horizontal, 120)
.foregroundColor(.white)
.background(self.buttonContinue == button ? Color.black: Color.gray)
.clipShape(Capsule())}}
}
我已经使用这段代码创建了一个继续按钮。在浅色模式下,颜色效果很好(从灰色背景和白色文本到黑色背景和白色文本),但是,当我切换到深色模式时,单击时按钮的背景从灰色消失为无。无论如何,我可以在深色模式下将按钮的背景更改为白色(因为当我尝试过时我只能更改文本颜色)?
在你的情况下你可以简单地做:
Text("Button \(button)")
.padding(.vertical, 12.5)
.padding(.horizontal, 120)
.foregroundStyle(.background)
.background(2 == button ? Color.primary: Color.secondary)
.clipShape(Capsule())
或更多控制用途:
@Environment(\.colorScheme) var colorScheme
var textColor: Color {
if colorScheme == .dark {
return Color.white
} else {
return Color.black
}
}
或关注@loremipsum 并在资源中定义您自己的颜色
您可以在 Color(uiColor:) init 中使用 UIColor,或者创建您自己的具有任何外观(浅色)和深色模式颜色的颜色资产。使用 UIColor 如下:
Text("\(self.button[button])").padding(.vertical, 12.5)
.padding(.horizontal, 120)
.foregroundColor(.white)
// See below for the appropriate inits:
.background(self.buttonContinue == button ? Color(uiColor: .labelColor): Color(uiColor: .systemGrayColor)
.clipShape(Capsule())}}
或使用颜色资源: