【问题标题】: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。