我想伪造一个标题栏(更大并且颜色不同),所以我现在的方法如下:
我在标题栏正下方添加了一个 NSView,然后使用以下代码将标题栏设置为透明:
self.window.titlebarAppearsTransparent = true
self.window.styleMask |= NSFullSizeContentViewWindowMask
下一步是,我将 NSView 子类化以添加一些绘图方法(背景等),尤其是代码,以便我可以使用完整的 NSView 来移动窗口(因此我使用此代码:https://stackoverflow.com/a/4564630/2062613)
这是结果:
现在我要做的下一件事是将这个新标题栏中的红绿灯按钮垂直居中。我知道,我可以使用 self.window.standardWindowButton(NSWindowButton.CloseButton)
访问按钮(例如)。但是更改其中一个按钮的 frame.origin
没有任何效果。
如何更改按钮的 origin.y 值?
更新
我发现,调整窗口大小会重新排列按钮。现在我决定将按钮作为 subview 添加到我的假标题栏中,因为移动标题栏中的原点会切断按钮(显然仅限于标题栏矩形)。
这有效,但奇怪的是按钮的鼠标悬停效果仍然保留在标题栏中。看看这个屏幕:
这实际上是我的代码:
func moveButtons() {
self.moveButtonDownFirst(self.window.standardWindowButton(NSWindowButton.CloseButton)!)
self.moveButtonDownFirst(self.window.standardWindowButton(NSWindowButton.MiniaturizeButton)!)
self.moveButtonDownFirst(self.window.standardWindowButton(NSWindowButton.ZoomButton)!)
}
func moveButtonDownFirst(button: NSView) {
button.setFrameOrigin(NSMakePoint(button.frame.origin.x, button.frame.origin.y+10.0))
self.fakeTitleBar.addSubview(button)
}
最佳答案
您需要添加工具栏并更改窗口属性titleVisibility
。更多详情 NSWindow Style Showcase .
let customToolbar = NSToolbar()
window?.titleVisibility = .hidden
window?.toolbar = customToolbar
关于swift - NSWindow : change positions of window buttons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085631/