1

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

还:

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

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

在此处输入图像描述

如果有人能告诉我如何管理这个困难的 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
    }
}
4

2 回答 2

4

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

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

这里 searchField 是一个 NSSearchField

要移除焦点边框:

searchField.focusRingType = .none

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

于 2017-07-21T16:14:48.840 回答
0

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

if let cell = searchField.cell as? NSSearchFieldCell {
      cell.searchButtonCell = nil
}
于 2021-03-01T12:14:29.033 回答