NSTextfield NSPopover透明背景

时间:2015-04-07 13:55:17

标签: macos cocoa nstableview nspopover

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

的扩展

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


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

奇怪的是,如果视图附加到NSWindow

,它可以正常工作

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

这是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
}

1 个答案:

答案 0 :(得分:13)

这是文本字段充满活力的问题,导致其周围的表格视图的白色背景也能够充满活力地呈现。这种活力会导致加上混合模式,因此变得不可见。

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

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


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