Lup*_*rus 10 macos cocoa appkit swift
我想伪造一个标题栏(更大,颜色不同),所以到目前为止我的方法如下:
我在标题栏的正下方添加了一个NSView,然后使用以下代码将标题栏设置为透明:
self.window.titlebarAppearsTransparent = true
self.window.styleMask |= NSFullSizeContentViewWindowMask
Run Code Online (Sandbox Code Playgroud)
下一步是,我将NSView子类化添加一些绘图方法(背景等),特别是代码,以便我可以使用完整的NSView来移动窗口(因此我使用此代码:https:// stackoverflow. com/a/4564630/2062613)
这是结果:
现在我要做的下一件事就是在这个新标题栏中垂直居中交通灯按钮.我知道,我可以使用self.window.standardWindowButton(NSWindowButton.CloseButton)
(例如)访问按钮.但更改frame.origin
其中一个按钮没有任何影响.
如何更改按钮的origin.y值?
UPDATE
我发现,窗口调整大小会重新排列按钮.现在我决定将按钮作为子视图添加到我的假标题栏中,因为移动标题栏中的原点会切断按钮(显然它仅限于标题栏rect).
这有效,但奇怪的是按钮的鼠标悬停效果仍然保留在标题栏中.看看这个屏幕:
这实际上是我的代码:
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)
}
Run Code Online (Sandbox Code Playgroud)
您需要添加工具栏并更改窗口属性titleVisibility
。这里有更多细节NSWindow Style Showcase。
let customToolbar = NSToolbar()
window?.titleVisibility = .hidden
window?.toolbar = customToolbar
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2780 次 |
最近记录: |