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

Jos*_*ard 1 cocoa drawing subclass nssearchfield swift

这是这个问题的重复。因为我对 Swift 的了解都是 Swift3,所以我想知道是否有人可以“翻译”这个答案中建议的解决方案。

\n\n

还:

\n\n

我制作了一个没有边框的 NSSearchfield,将其放入框架视图中,它仍然显示灰色边框。我很好奇如何禁用动画灰色边框,甚至如何更改灰色“搜索”线的颜色。

\n\n

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

\n\n

在此输入图像描述

\n\n

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

\n\n

//更新

\n\n

根据firstinq\xc2\xb4s的回答,图标现在消失了,这很棒。但仍然存在令人不安的动画灰色边框。我可以\xc2\xb4t理解:NSSearchFielt位于NSView(蓝色边框)内。所以 NSView 之外的所有内容都应该隐藏,对吧?那么为什么我仍然看到灰色边框?cell.isBordered = false没有效果。\n有什么建议如何处理吗?

\n\n

在此输入图像描述

\n\n

这就是我绘制 NSView 边框的方法:

\n\n
class SearchFieldBorder: NSView {\n\n    override func draw(_ dirtyRect: NSRect) {\n        super.draw(dirtyRect)\n\n        self.layer?.borderWidth = 1\n        self.layer?.borderColor = NSColor.blue.cgColor\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

fir*_*inq 5

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

if let cell = self.searchField.cell as? NSSearchFieldCell {
    cell.searchButtonCell?.isTransparent = true
}
Run Code Online (Sandbox Code Playgroud)

这里的 searchField 是一个 NSSearchField

要删除焦点边框:

searchField.focusRingType = .none
Run Code Online (Sandbox Code Playgroud)

要更改灰线/光标,最好将 NSSearchField 子类化并重写方法。您可以从这里得到一个想法。