Подтвердить что ты не робот

Xcode & Swift - Окно без заголовка, но с кнопками "закрыть", "Свернуть" и "Изменить размер"

В настоящее время я использую Swift в Xcode 6, Beta 5. Я пытаюсь удалить строку заголовка или любую видимую разницу между заголовком и фактическим содержимым. Если я включу "Унифицированный заголовок и панель инструментов" в Инспекторе атрибутов в окне, ничего явно не произойдет. Я уже покинул титул. Если заголовок не введен, строка заголовка будет по-прежнему различима из-за границы линии и фоновой разницы с остальной частью окна, отделяя ее от фактического содержимого.


Прекрасным примером может служить текущее приложение Yosemite, OS X 10.10, Notes. Никакая строка заголовка не видна или не различима, просто кнопки Close, Minimize и Resize, как показано здесь. Screenshot of Notes window

Я искал и посещал другие сообщения, но ни к чему не помог.
Те, кто упоминал, скрывали заголовок в целом, но я не знал бы, как правильно вручную добавить кнопки Close, Minimize и Resize, что означает, что они будут выглядеть корректно, без фактических, скрытых замен и заметок изображений с панелью меню Close, Minimize и Resize.

4b9b3361

Ответ 1

Новая маска стиля окна NSFullSizeContentViewWindowMask, добавленная в OS X 10.10, сделает трюк.

self.window.titleVisibility = NSWindowTitleVisibility.Hidden;
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSFullSizeContentViewWindowMask;

Примечания к выпуску

Ответ 2

Для 10.10+ вы можете использовать их:

window.titlebarAppearsTransparent = true
window.movableByWindowBackground  = true

В Йосемити был официальный образец проекта для оформления окна. Вы можете проверить это.

Ответ 3

Для Swift 3: -

self.window.titleVisibility = .hidden
self.window.titlebarAppearsTransparent = true
self.window.styleMask.insert(.fullSizeContentView)

Ответ 4

Вы можете использовать их:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.movableByWindowBackground = true
}

Ответ 5

У меня недостаточно репутации, чтобы комментировать ответ Ranfei Songs, но, работая на OSX 10.12, синтаксис titleVisibility немного отличается, вместо этого:

self.window.titleVisibility = NSWindowTitleVisibility.Hidden;

вам нужно будет использовать NSWindowTitleHidden, поэтому обновление кода Ranfei приведет к тому, что вам нужно будет указать это следующим образом:

self.window.titleVisibility = NSWindowTitleHidden;
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSFullSizeContentViewWindowMask;

Ответ 6

Обновление сентябрь 2017, taget 10.11:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titleVisibility = .hidden
    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.styleMask.insert(.fullSizeContentView)
}