在 macOS 上的 SwiftUI 中更改文本字段占位符颜色

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

我正在尝试在 macOS 上设置文本字段的占位符颜色。我试过:

TextField("", text: $text, prompt: Text("prompt"))
                    .tint(.red)

但这似乎没有得到尊重。

.accentColor
已弃用(并且不起作用),
.foregroundStyle
不会影响它(无论我将其放在文本字段之外还是直接放在提示上),
.colorMultiply
不正确,因为它适用于整个字段,它是一种混合模式,而不是单个颜色的设置(它使所有颜色都成为您设置的颜色)。

我尝试通过子类化

TextFieldStyle
来执行自定义样式,但找不到任何会影响它的修饰符。

我需要诉诸自定义的

NSViewRepresentable
AppKit
吗?我认为 SwiftUI 现在已经支持这些功能了。也许我错过了一些东西。

我对插入符号颜色也有同样的问题。

swift macos swiftui textfield nstextfield
1个回答
0
投票

如果没有可用的修改器,那么解决方法是将提示显示为覆盖层。然后你可以按照你喜欢的方式设计它:

TextField("", text: $text)
    .overlay(alignment: .leading) {
        if text.isEmpty {
            Text("prompt")
                .foregroundStyle(.red)
                .allowsHitTesting(false)
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.