【问题标题】:How to display an image on the NSWindow title bar that's half outside如何在半外的 NSWindow 标题栏上显示图像
【发布时间】:2012-11-13 09:41:11
【问题描述】:

我有一个自定义的 NSWindow 子类 - INAppStoreWindow (github) 和自定义标题栏视图 - 我想做这样的事情:

如您所见,功能区并不完全位于标题栏之外。就像在中间。
我怎样才能做到这一点?

【问题讨论】:

    标签: objective-c macos nsview nswindow titlebar


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-04-06
        • 2015-10-30
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多