NSSearchField:如何隐藏图标和边框?

NSSearchField: How to hide icon and border?

这有点像 问题的重复。因为我所知道的关于 Swift 的一切都是 Swift3,我想知道是否有人可以 "translate" 这个答案中的建议解决方案。

还有:

我做了一个无边框的NSSearchfield,放在framed view里,还是显示灰色边框。我很好奇如何禁用动画灰色边框,甚至可能如何更改灰色 "search" 线的颜色。

我丑陋的结果现在看起来像这样:

如果有人能告诉我如何管理这个困难的 NSSearchfield,那将是一个很大的帮助。

//更新

根据 firstinq 的回答,图标现在消失了,这很好。但是,仍然有这个令人不安的动画灰色边框。我无法理解:NSSearchFielt 在 NSView(蓝色边框)内。所以 NSView 之外的所有东西都应该被隐藏,对吧?那么为什么我仍然看到灰色边框? cell.isBordered = false没有效果。 有什么建议如何处理吗?

这是我绘制 NSView 边框的方式:

class SearchFieldBorder: NSView {

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        self.layer?.borderWidth = 1
        self.layer?.borderColor = NSColor.blue.cgColor
    }
}

要隐藏图标:将单元格转换为 NSSearchFieldCell 并将单元格的 searchButtonCell 设置为透明。可能的 swift3 版本:

if let cell = self.searchField.cell as? NSSearchFieldCell {
    cell.searchButtonCell?.isTransparent = true
}

这里的searchField是一个NSSearchField

要移除焦点边框:

searchField.focusRingType = .none

要更改灰色 line/cursor 最好继承 NSSearchField 并覆盖这些方法。 你可以从 here.

得到一个想法

我会补充上面的答案。 要隐藏搜索图标,请将 nil 分配给 SearchButtonCell 属性

if let cell = searchField.cell as? NSSearchFieldCell {
      cell.searchButtonCell = nil
}