我有一个NSView,如果框架改变我需要注意.
class CustomView: NSView {
override var frame: NSRect {
didSet {
Swift.print("changed frame: \(self.frame)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果调整superView框架的大小,我只会得到这个"notifikation".
如果我在NSView类中执行类似的操作:
NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: "changeOwnSize"), object: nil, queue: nil) { notification in
let newSize = NSSize(width: self.frame.width / 2, height: self.frame.height)
self.setFrameSize(newSize)
}
Run Code Online (Sandbox Code Playgroud)
该didSet功能根本没有反应.虽然框架大小已更改.谢谢你的建议.
这是这个问题的重复。因为我对 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