在macOS上,使用SwiftUI,与列表有关:
我需要修改列表的背景色。
使用视图调试器,我看到列表内部有一个ListCoresScrollView,内部有一个_NSScrollViewContentBackgroundView
和一个NSVisualEffectView。该视图默认情况下具有白色背景。我想更改该特定视图(例如,使其变得透明),因为它似乎是内部视图。
如何修改列表的背景视图(在macOS中,not IOS)?
Btw,我尝试使用SidebarListStyle()。那确实提供了我想要的背景,但是... SidebarListStyle中的拖动行为是不同的(不需要的)。因此,我的问题的另一种解决方案是“如何在SidebarListStyle上修改拖动行为以模仿默认的拖动行为”?
这花了我很多小时,但我无法提出适当的解决方案。谁能提供可行的解决方案?
此作品:)
extension NSTableView { open override func viewDidMoveToWindow() { super.viewDidMoveToWindow() // set the background color of every list backgroundColor = .clear enclosingScrollView?.drawsBackground = false enclosingScrollView?.backgroundColor = .clear enclosingScrollView?.autohidesScrollers = true enclosingScrollView?.verticalScroller = MyScroller() } } class MyScroller: NSScroller { override func draw(_ dirtyRect: NSRect) { self.drawKnob() } }
原始答案
不确定您是否仍在寻找答案,但这是我设法获得的最接近。仍然不能使滚动条(尤其是背景)实际上是透明的。但是,比我近。
在您的项目中为此添加一个快速文件(目前,我只是将其放在ContentView.swift文件的顶部)。
有效。但是,事实并非如此。我也许不需要所有这些设置,但是我会继续添加,直到我能完全使用它。HTH-如果您已完全解决它,请告诉我。extension NSTableView { open override func viewDidMoveToWindow() { super.viewDidMoveToWindow() // set the background color of every list backgroundColor = .clear headerView = nil enclosingScrollView?.drawsBackground = false enclosingScrollView?.backgroundColor = .clear enclosingScrollView?.hasHorizontalScroller = false enclosingScrollView?.autohidesScrollers = true } }
从我阅读的内容来看,此[[应该