Xcode& Swift - 没有标题栏但有关闭,最小化和调整大小按钮的窗口

时间:2014-08-11 19:20:14

标签: swift cocoa interface-builder osx-yosemite titlebar

我目前在Xcode 6,Beta 5中使用Swift。 我试图删除标题栏,或标题栏和实际内容之间的任何明显差异。如果我在窗口的“属性”检查器中启用“统一标题和工具栏”,则不会发生任何明显的情况。我已经把标题排除了。
如果没有输入标题,标题栏仍然可以区分,因为边界线和背景与窗口的其余部分不同,将其与实际内容分开。


一个很好的例子是当前的Yosemite,OS X 10.10,Notes应用程序。没有标题栏可见或可区分,只有关闭,最小化和调整大小按钮,如此处所示。 Screenshot of Notes window

我已经搜索过并访问了其他帖子,但是没有收获 提到的那些完全隐藏标题栏,但我不知道如何手动重新添加关闭,最小化和调整大小按钮正确,这意味着它们看起来是正确的,没有实际的,偷偷摸摸的图像替换和连接使用菜单栏关闭,最小化和调整大小功能。

7 个答案:

答案 0 :(得分:44)

OS X 10.10中添加的新窗口样式掩码NSFullSizeContentViewWindowMask将起到作用。

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

Release Notes

答案 1 :(得分:18)

对于10.10+,你可以使用这些:

window.titlebarAppearsTransparent = true
window.movableByWindowBackground  = true

在约塞米蒂有一个关于窗户外观的官方示例项目。你可能想看看它。

答案 2 :(得分:16)

对于Swift 3: -

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

答案 3 :(得分:11)

你可以使用这些:

override func viewDidAppear() {
    super.viewDidAppear()

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

答案 4 :(得分:4)

如果使用情节提要,它只是检查器栏中的一个简单复选框。

  1. 从故事板选择窗口 enter image description here

  2. 在检查器窗口中选中“透明标题栏”复选框。

enter image description here

这是故事板中的外观。在构建和运行应用程序时,外观看起来相同。

enter image description here

答案 5 :(得分:3)

2017年9月更新,taget 10.11:

override func viewDidAppear() {
    super.viewDidAppear()

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

答案 6 :(得分:1)

我没有足够的声誉评论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;