NSWindow标题栏不能完全透明吗?

时间:2019-01-16 02:17:37

标签: swift macos nswindow appkit

我有一个Mac应用程序,并且我通过InterfaceBuilder将NSWindow的标题栏设置为透明。但是它不是完全透明的,窗口上方总是有一条线。我确定这是标题栏的亮点部分。您可能需要仔细查看图片,它位于红色框中,但是在运行应用程序时,这很明显。

我也尝试过使窗口FullSizeContentView。但这没什么区别。白色高亮部分将仅向下移动到我的窗口顶部。而且因为我使用的是圆角窗口,所以它仍然非常明显(我不知道为什么它不会剪切标题栏)

whiteline

先谢谢了。真的希望有人可以帮助我。以下是我用来创建窗口的部分代码:

final class BaseWindow: NSPanel {
    override init(contentRect: NSRect, styleMask style: NSWindow.StyleMask, backing backingStoreType: NSWindow.BackingStoreType, defer flag: Bool) {
        ...
        isMovableByWindowBackground = true
        isMovable = true
        level = .mainMenu
        isOpaque = false
        styleMask = [.titled]
        titlebarAppearsTransparent = true
        titleVisibility = .hidden
        backgroundColor = .clear
        collectionBehavior = [.ignoresCycle, .canJoinAllSpaces]
        ...
    }
}

2 个答案:

答案 0 :(得分:0)

从代码中删除标题样式蒙版,并检查其是否有效

我正在使用以下代码,对我来说很好用

let window = NSWindow(contentRect: NSMakeRect(10, 10, 700, 700), styleMask: .titled, backing: .buffered, defer: false)
window.isOpaque = false
window.titlebarAppearsTransparent = true
window.makeKeyAndOrderFront(nil)
window.isMovableByWindowBackground = true

答案 1 :(得分:0)

不确定是否有工具栏,但必须删除工具栏。