3

我有一个自定义NSWindow子类 - INAppStoreWindow( github ) 带有自定义标题栏视图 - 我想做这样的事情:
在此处输入图像描述
如您所见,功能区并不完全在标题栏之外。这就像在中间。
我怎样才能做到这一点?

4

2 回答 2

1

最简单的方法可能是为徽章使用单独的窗口。使其成为主窗口的子窗口,它将保持在顶部并随其移动。它将是无边界的并且基本上是透明的,等等。

但是,如果主窗口水平调整大小,可能很难保持标记子窗口正确定位。或者,您可以轻松地移动徽章子窗口,但它可能会滞后于调整大小。

于 2013-11-10T16:43:22.973 回答
0

您的图像必须绘制在窗口区域内。即使这意味着您的窗口的某些部分是透明的。

你可以用所有常见的无边框窗口的东西来做到这一点。只需将两个视图用于标题栏区域。一种用于标题栏本身,其中视图内容清晰,或者您可以说不透明的内容没有到达视图的顶部。在您的徽章的子视图中,绘制您喜欢的任何徽章。让您的徽章视图延伸到标题栏视图的顶部并重叠其透明区域。

您可能会在窗口与菜单栏的交互方式和外观方面遇到不好的权衡。由于这是高度非标准的,并且存在应该由 Cocoa 提供和解决的 UI 问题(如果有),我建议寻找不同的设计。这将需要大量的工作来维护和完成。定制的无边框窗口并不难做,但要做好却很难。在 OS X 上 NSWindow 的子视图中有许多视觉状态变化的细微之处。颜色会根据窗口的键和主要状态而变化。它是免费的标准窗口和视图。使用定制的东西,你必须做更多的事情。

于 2013-11-10T13:30:10.783 回答