40

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


一个很好的例子是当前的 Yosemite,OS X 10.10,Notes 应用程序。没有标题栏可见或可区分,只有此处所示的关闭、最小化和调整大小按钮。 备注窗口的屏幕截图

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

4

7 回答 7

44

NSFullSizeContentViewWindowMaskOS X 10.10 中添加的新窗口样式掩码可以解决问题。

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

发行说明

于 2015-04-17T07:52:44.680 回答
21

Since MacOS X 10.10, you can use these:

if #available(macOS 10.10, *) {
    window.titlebarAppearsTransparent = true
}

if #available(macOS 10.2, *) {
    window.movableByWindowBackground  = true
}

There was an official sample project for window appearance in Yosemite. You might wanna check it out.

于 2014-09-04T00:23:41.687 回答
16

对于 Swift 3:-

self.window.titleVisibility = .hidden
self.window.titlebarAppearsTransparent = true
self.window.styleMask.insert(.fullSizeContentView)
于 2017-02-17T19:14:58.450 回答
13

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

  1. 从故事板中选择窗口 在此处输入图像描述

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

在此处输入图像描述

这是故事板中的样子。当您构建和运行应用程序时,它看起来是一样的。

在此处输入图像描述

于 2019-03-08T17:42:45.343 回答
11

你可以使用这些:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.movableByWindowBackground = true
}
于 2015-01-15T15:51:05.990 回答
4

2017 年 9 月更新,目标 10.11:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titleVisibility = .hidden
    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.styleMask.insert(.fullSizeContentView)
}
于 2017-09-02T10:11:29.863 回答
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;
于 2017-01-05T20:37:12.117 回答