让 NSPanel 永远在最前面
Make NSPanel always on top
我正在为 react-native-macos 搭建一座桥梁。我需要具有与 Spotlight 相同行为的 NSPanel。
我以编程方式创建了它,但有疑问:
- 不能让它总是在最前面(如果应用程序被隐藏它也应该工作)
- 面板内有NSTextField。如果我试图隐藏标题面板,我将无法更改该字段。看起来它已禁用。
- 显示结果的最佳方式是什么(例如在聚光灯下)
private var panel = NSPanel()
private var textField = NSTextField(frame: NSMakeRect(0,0,400,40))
var frame: NSRect = CGRect(x: 0, y: 0, width: 400, height: 40)
frame.size = NSSize(width: 400, height: 60)
panel.setFrame(frame, display: true)
let view: NSView = NSView(frame: frame)
myTextField.stringValue = "Some text"
myTextField.isEnabled = true
myTextField.font = NSFont.systemFont(ofSize: 28)
view.addSubview(myTextField)
panel.contentView?.addSubview(view)
panel.makeKeyAndOrderFront(panel)
panel.center()
让它浮动
panel.isFloatingPanel = true // << this one !!
panel.makeKeyAndOrderFront(panel)
panel.center()
这对我有用
panel.level = .mainMenu
我正在为 react-native-macos 搭建一座桥梁。我需要具有与 Spotlight 相同行为的 NSPanel。 我以编程方式创建了它,但有疑问:
- 不能让它总是在最前面(如果应用程序被隐藏它也应该工作)
- 面板内有NSTextField。如果我试图隐藏标题面板,我将无法更改该字段。看起来它已禁用。
- 显示结果的最佳方式是什么(例如在聚光灯下)
private var panel = NSPanel()
private var textField = NSTextField(frame: NSMakeRect(0,0,400,40))
var frame: NSRect = CGRect(x: 0, y: 0, width: 400, height: 40)
frame.size = NSSize(width: 400, height: 60)
panel.setFrame(frame, display: true)
let view: NSView = NSView(frame: frame)
myTextField.stringValue = "Some text"
myTextField.isEnabled = true
myTextField.font = NSFont.systemFont(ofSize: 28)
view.addSubview(myTextField)
panel.contentView?.addSubview(view)
panel.makeKeyAndOrderFront(panel)
panel.center()
让它浮动
panel.isFloatingPanel = true // << this one !!
panel.makeKeyAndOrderFront(panel)
panel.center()
这对我有用
panel.level = .mainMenu