如何在NSWindow上面画一个“讲话泡泡”?

时间:2011-07-05 01:39:17

标签: objective-c cocoa macos

请注意这个应用:

enter image description here

如何在现有NSWindow之上绘制那种三角形?我知道有问题的应用程序可能会将整个事情作为一个自定义窗口,但我想保留现有的标题栏。有没有办法绘制三角形并将其附加到NSWindow上方?请注意,解决方案必须与MAS兼容(即没有私有框架或类)。

3 个答案:

答案 0 :(得分:2)

执行此操作的唯一方法是创建一个无边框的子窗口,该窗口没有覆盖现有窗口边缘的阴影。你需要自己绘制任何影子。

答案 1 :(得分:0)

更全面的解决方案将涉及继承NSThemeFrame并进行一些自定义绘图。看看Matt Gallagher的Drawing a custom window on Mac OS X。它包含大量有用的信息,谷歌也将在这里提供很大的帮助。

答案 2 :(得分:0)

我编写了一个开源(BSD)框架来绘制类似于此的窗口:https://github.com/sbooth/SFBPopovers

它不会直接执行您需要的操作,但会说明绘制自定义窗口框架的基础知识。