更新: 只是为了澄清一下,我为深色和浅色模式设置了相同的颜色。
我用以下代码制作了一个简单的 CustomColorPicker:
struct CustomColorPicker: View {
@Binding var selectedColor: Color
let colors: [Color] = [Color("my_blue"),
Color("my_blue_light"),
Color("my_yellow"),
Color("my_red"),
Color("my_green"),
Color("my_pink"),
Color("my_orange"),
Color("my_purple")]
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 18) {
ForEach(colors, id: \.self) { color in
Button(action: {
self.selectedColor = color
}) {
Image(systemName: self.selectedColor == color ? "checkmark.circle.fill" : "circle.fill")
.resizable()
.frame(width: 25, height: 25)
}.accentColor(color)
}
}
}
}
}
然后,继续创建一个超级简单的视图,如下所示:
struct CreateEmojiColor: View {
@State private var selectedColor = Color("my_blue")
var body: some View {
CustomColorPicker(selectedColor: $selectedColor)
.padding(.vertical)
}
}
一切正常。这是结果:
然后我将“CreateEmojiColor”视图嵌入到列表中,如下所示:
NavigationStack {
VStack{
List{
Section{
otherView()
CreateEmojiColor()
otherView2()
otherView3()
}
}
}
}
问题是,当我在模拟器或设备上运行代码时,结果是这样的:
不明白为什么。难道我做错了什么? 谢谢大家。
对于那些可能碰巧遇到同样问题的人,Asad 的回复为我解决了问题。
“.accentColor”修饰符覆盖了颜色。 使用“.foregroundStyle(color)”解决了这个问题。 谢谢阿萨德。