Строка заголовка NSWindow не может быть полностью прозрачной? - PullRequest
0 голосов
/ 16 января 2019

У меня есть приложение Mac, и я установил прозрачность заголовка NSWindow через InterfaceBuilder. Но он не полностью прозрачен, всегда есть линия над окном. Я уверен, что это самая яркая часть строки заголовка. Возможно, вам придется внимательно посмотреть на изображение, оно просто внутри красной рамки, но это довольно очевидно, когда вы запускаете приложение.

Я также пытался сделать окно 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 голосов
/ 09 февраля 2019

Не уверен, если у вас есть панель инструментов, но если у вас есть, вы должны удалить разделитель.

0 голосов
/ 16 января 2019

Удалите заголовочную маску стиля из кода и проверьте, работает ли она

Я использую следующий код, и он прекрасно работает для меня

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
...