【问题标题】:Restrict SwiftUI ColorPicker to only colors that work in light/dark mode将 SwiftUI ColorPicker 限制为仅在亮/暗模式下工作的颜色
【发布时间】:2020-11-21 17:31:30
【问题描述】:

有没有办法将ColorPicker 限制为显示在亮/暗模式下工作的颜色?

现在我只知道允许用户选择任何颜色的默认 ColorPicker 配置:

【问题讨论】:

  • ColorPicker(以及相应的 UIColorPickerViewController)现在不提供此类功能。
  • @Asperi 啊,好的,谢谢
  • 据我了解,每个颜色都可以以深色或浅色模式呈现。据我了解,您正在寻找系统支持暗/亮模式的颜色。对吗?

标签: swiftui uicolorpickerviewcontroller


【解决方案1】:

很遗憾,ColorPicker 还不能自定义到那种程度。作为一种解决方法,这里有一个简单的颜色选择器,您可以通过在 colors 数组中定义所有需要的颜色来轻松自定义它。

import SwiftUI

struct ContentView: View {
    var colors: [[UIColor]] = [
        [.red, .green, .blue],
        [.purple, .systemPink, .systemTeal],
        [.darkGray, .orange, .yellow]
    ]

    @State var selectedColor = UIColor.red

    var body: some View {
        VStack {
            colorPalette

            HStack(alignment: .center) {
                Text("Selected color:")

                Color(selectedColor)
                    .frame(width: 60, height: 60)
            }
        }
    }

    var colorPalette: some View {
        VStack(spacing: 0) {
            ForEach(colors, id: \.self) { colorRowColors in
                getColorRow(colors: colorRowColors)
            }
        }
    }

    func getColorRow(colors: [UIColor]) -> some View {
        HStack(spacing: 0) {
            ForEach(colors, id: \.self) { color in
                Button {
                    selectedColor = color
                } label: {
                    Color(color)
                        .border(Color.gray, width: color == selectedColor ? 2 : 0)
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2020-07-29
    • 2021-06-21
    • 2021-07-15
    • 1970-01-01
    • 2020-04-05
    • 2021-03-28
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多