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有什么建议如何处理吗?
这就是我绘制 NSView 边框的方法:
\n\nclass 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}\nRun Code Online (Sandbox Code Playgroud)\n
要隐藏图标:将单元格转换为 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 子类化并重写方法。您可以从这里得到一个想法。