更新以包含 OP 的反馈,即最初提出的解决方案并未完全消除色调。
在使用 Xcode 14 beta 1 的 Ventura 上,通过在
background
扩展滚动条下的背景之后添加 .scrollContentBackground(.hidden)
修饰符,可以非常接近 [0] 实现所需的效果,
例如
TextEditor(text: $text)
.scrollContentBackground(.hidden)
.background(.cyan)
哪里
$text
是牛奶木下的一小段给出除此之外,据我所知 SwiftUI 的
TextEditor
目前还没有原生 api 可以更接近。不过,作为替代方案 - 如果使用底层 AppKit
组件及其权衡是可以接受的 - 那么更好的样式可能是一个选择。
例如,使用
Introspect
库来启用更现代的覆盖滚动样式:
import Introspect // from https://github.com/siteline/SwiftUI-Introspect
struct ContentView: View {
@State var text = demoText
var body: some View {
TextEditor(text: $text)
.scrollContentBackground(.hidden)
.background(.cyan)
.introspectTextView { (nsV: NSTextView) in
DispatchQueue.main.async {
nsV.enclosingScrollView?.scrollerStyle = .overlay
}
}
}
}
看起来效果相当不错
[0] 留下的微妙色调,正如我们所看到的 - 容易被错过 - 或者至少对我来说是这样的:-/
TextEditor(text: $text)
.scrollContentBackground(.hidden)
.background(.clear)
此代码可以工作 除非带滚轮的鼠标连接到 Mac 而不是触控板。连接鼠标时,滚动条显示白色背景。这种情况在整个操作系统中都会发生。