swiftui - 将 SwiftUI ColorPicker 限制为仅在亮/暗模式下工作的颜色

标签 swiftui uicolorpickerviewcontroller

有没有办法限制ColorPicker只有显示在明/暗模式下工作的颜色?
现在我只知道默认的 ColorPicker允许用户选择任何颜色的配置:
enter image description here

最佳答案

不幸的是,ColorPicker 还不能自定义到那种程度。作为一种解决方法,这里有一个简单的颜色选择器,您可以通过在 colors 中定义所有所需的颜色来轻松自定义它。大批。
screenshot of the color picker

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)
                }
            }
        }
    }
}

关于swiftui - 将 SwiftUI ColorPicker 限制为仅在亮/暗模式下工作的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64946035/

相关文章:

SwiftUI Zstack – 使元素忽略安全区域而另一个不

ios - 为什么我的函数在使用 DispatchQueue 时不执行?

swift - 在 SwiftUI 中的 ActionSheet 上设置辅助功能标识符

button - 为什么将 View 放在 Button 中会导致 LazyVGrid 严重滞后(错误?)?

swiftui - ScrollView 中的 LazyVStack 自动滚动出现抖动