【问题标题】:Creating semi-transparent, round cornered with border Window in Cocoa?在 Cocoa 中创建带边框的半透明圆角窗口?
【发布时间】:2014-11-25 04:10:07
【问题描述】:

什么是创建半透明窗口的最佳方法,它有圆角和围绕其边框和箭头的轮廓,但没有标题栏和按钮。

当用户单击菜单栏图标时,该窗口将从菜单栏弹出。

我正在寻找类似于“应用程序”和“下载”窗口的效果:

我想我需要自己画图。但是我想知道最好的方法是什么,以及是否有任何东西已经内置到 Cocoa 中可以最大限度地减少工作量?或者可能是已经完成的第 3 方项目(找不到完全类似的东西)?

谢谢。

【问题讨论】:

    标签: objective-c macos cocoa user-interface


    【解决方案1】:

    您可以使用

    创建您的窗口

    - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation

    带有NSBorderlessWindowMask 的样式掩码,这将提供一个朴素的窗口。它也是 Dock 的机制。

    请注意,您必须使用此样式进行初始化,您不能更改已初始化的窗口样式。

    通过contentView 访问器放置一个自定义NSView,并将所需的背景自定义绘图放在Windows 视图堆栈的顶部。

    您可能还需要setOpaque 到NO

    【讨论】:

      【解决方案2】:

      您正在寻找的东西已经完成了很多。真的太多了。 您要查看的类如下。

      NSStatusItem 这是出现在右侧菜单栏状态栏部分的内容。

      NSMenu 如果你想从应用程序菜单中的菜单中获得这个,你需要对菜单中的视图做一些聪明的事情。

      NSWindow 正如另一张海报所指出的,无边框窗口是实现这一目标的一种方式。

      NSPpopover 这是另一种方式。结合上述,一个奇特的技术是使用一个称为覆盖窗口的透明窗口,然后,当单击菜单或状态菜单时,从透明覆盖窗口下方的点调用弹出框。

      这应该足以让您开始了解您应该研究的内容。

      除此之外,仔细阅读 Mac App Store 并查看 cocoacontrols.com 和 GitHub。

      【讨论】:

        猜你喜欢
        • 2010-12-26
        • 1970-01-01
        • 2013-02-08
        • 2017-12-28
        • 1970-01-01
        • 2021-09-17
        • 2013-05-31
        • 1970-01-01
        相关资源
        最近更新 更多