【问题标题】:Remove NSTableView Floating Group Row Underline in Big Sur删除 Big Sur 中的 NSTableView 浮动组行下划线
【发布时间】:2020-12-09 15:50:24
【问题描述】:

我有NSOutlineViews 以​​浮动组行作为标题。我的标题是半透明的,所以滚动的内容可以在下面看到:

在 Big Sur 中,标题如下所示:

它们下面有一个下划线,并且所有的透明度都被删除了 - 所以看起来好像在某处添加了背景。

我正在继承 NSTableRowViewNSOutlineView 以停止任何绘图:

override func draw(_ dirtyRect: NSRect) {}

我也在 NSTableRowView 上禁用“组样式”:

override var isGroupRowStyle: Bool { get { false } set {} }

谁能告诉我线条和背景可能来自哪里?谢谢。

编辑

进一步调查显示背景和线条渲染是 NSScrollView 浮动内容视图 (_NSScrollViewFloatingSubviewsContainerView) 的一部分。似乎没有任何与此相关的选项。

【问题讨论】:

    标签: nstableview appkit nsoutlineview macos-big-sur


    【解决方案1】:

    以下极端技巧目前适用于我更改NSTableView 中浮动标题的背景,并删除下划线:

    extension YourViewController: NSTableViewDelegate {
        func tableView(_ tableView: NSTableView, didAdd rowView: NSTableRowView, forRow row: Int) {
            if row == 0, rowView.isGroupRowStyle {
                DispatchQueue.main.async {
                    if let scroll = tableView.enclosingScrollView {
                        for sub in scroll.subviews {
                            if sub.className.contains("Float"),
                               let effect = sub.subviews.first?.subviews.first?.subviews.first as? NSVisualEffectView,
                               let line = sub.subviews.first?.subviews.first?.subviews.last {
                                effect.material = .menu
                                line.isHidden = true
                            }
                        }
                    }
                }
            }
        }
    }
    

    当添加第 0 行时,tableview 的.enclosingScrollView 的子视图正在被迭代(在通过调用其余代码异步给 tableview 一些时间来呈现浮动标题之后)直到我们遇到我们的视图想要改变。

    当然,这种代码是“坏习惯”的一个例子,一旦 Apple 更改了粘滞标头的实现,它就会停止工作,但我不希望任何东西由于所有特定条件而崩溃。

    同时,最好的办法是提交反馈并请求调整NSTableViewNSOutlineView 的浮动标头。

    【讨论】:

    • 谢谢伊利。我已将此标记为正确,因为它肯定回答了问题!不过我不会发货的:)
    猜你喜欢
    • 2021-02-23
    • 2021-05-07
    • 1970-01-01
    • 2016-08-26
    • 2017-03-23
    • 2017-10-02
    • 2019-11-25
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多