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

时间:2017-07-21 15:44:55

标签: swift cocoa drawing subclass nssearchfield

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

此外:

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

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

enter image description here

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

// UPDATE

根据firstinq的回答,图标现在消失了,这很棒。但是,仍有这种令人不安的动画灰色边框。我无法理解:NSSearchFielt位于NSView(蓝色边框)内。因此,NSView之外的所有内容都应该被隐藏,对吧?那么为什么我仍然看到灰色边框? len()无效。 有任何建议如何处理?

enter image description here

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

cell.isBordered = false

2 个答案:

答案 0 :(得分:3)

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

var string ="<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>";

var elem= document.createElement("div");
elem.innerHTML = string;

var images = elem.getElementsByTagName("img");

for(i=0; i<images.length; i++){
   images[i].width = "150";
   images[i].height = "250";
}

string = elem.innerHTML;  // reassign the 'string' with new value
console.log(string);

此处searchField是一个NSSearchField

删除焦点边框:

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

要更改灰线/光标,最好是继承NSSearchField并覆盖方法。 您可以从here获得一个想法。

答案 1 :(得分:0)

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

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