NSTextfield NSPopover透明背景

Kau*_*eya 10 macos cocoa nstableview nspopover

免责声明:这个问题是一个扩展到这个问题

我正在尝试在NSPopover中填充表格.(如图所示)


问题:
我无法为NSTextField创建透明背景.

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


(左侧窗口中的名称具有透明背景,但在NSPopover中看到的相同视图无法向NSTextfield显示透明背景.) 在此输入图像描述

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


这是我创建表格单元格的代码

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
}
Run Code Online (Sandbox Code Playgroud)

Tay*_*lor 13

这是一个问题,文本字段被充满活力地渲染,导致其周围的表视图的白色背景也被充满活力地呈现.这种活力会导致plusL混合模式,因此变得不可见.

这只发生在弹出框中,因为这是一个充满活力的上下文,NSAppearanceNameVibrantLight默认情况下设置为外观.

来自WWDC2014的会话209和220讨论了关于活力的更多内容,以及关于NSVisualEffectView/vibrancy的10.10发行说明.


要解决此问题,可以将表视图的NSAppearanceNameAqua外观设置为外观.