NSTextfield NSPopover透明背景

Transparent background of NSTextfield NSPopover

免责声明:此问题是 this 问题

的扩展

我正在尝试在 NSPopover 中填充 Table。(如图所示)


问题:
我无法为 NSTextField 制作透明背景。

奇怪的是,如果将视图附加到 NSWindow,它工作正常


(左侧 window 中的名称具有透明背景,但在 NSPopover 中看到的相同视图无法向 NSTextfield 显示透明背景。)

这是 NSPopover 的错误还是我做错了什么?


这是我创建 Table 个单元格的代码

func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
    var cell = NSTableCellView(frame: NSMakeRect(0, 0, 100, 40))
    var textField = NSTextField(frame: NSMakeRect(0, 0, 50, 20))

    // **For transparency**
    textField.stringValue = nameList[row]
    textField.bezeled = false
    textField.editable = false
    textField.drawsBackground = false

    cell.addSubview(textField)
    return cell
}

这是一个问题,文本字段被渲染得很鲜艳,导致 table 视图周围的白色背景也被渲染得很鲜艳。这种活力导致 plusL 混合模式,因此变得不可见)。

这只发生在弹出窗口中,因为它是一个充满活力的上下文,并且默认设置为 NSAppearanceNameVibrantLight 外观。

WWDC2014 的第 209 和第 220 次会议讨论了更多关于活力的内容,以及关于 NSVisualEffectView / 活力的 10.10 发行说明。


要解决此问题,您可以将 table 视图的外观设置为 NSAppearanceNameAqua 外观。