SwifUI - 自定义颜色在设备和模拟器上看起来“简单”(不适用于预览)

问题描述 投票:0回答:1

更新: 只是为了澄清一下,我为深色和浅色模式设置了相同的颜色。


我用以下代码制作了一个简单的 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()
                }
            }
        }
 }

问题是,当我在模拟器或设备上运行代码时,结果是这样的:

不明白为什么。难道我做错了什么? 谢谢大家。

swiftui color-picker
1个回答
0
投票

对于那些可能碰巧遇到同样问题的人,Asad 的回复为我解决了问题。

“.accentColor”修饰符覆盖了颜色。 使用“.foregroundStyle(color)”解决了这个问题。 谢谢阿萨德。

© www.soinside.com 2019 - 2024. All rights reserved.