Macos NSWindow';s标题作为指示器弹出按钮

Macos NSWindow';s标题作为指示器弹出按钮,macos,cocoa,popup,indicator,nstoolbar,Macos,Cocoa,Popup,Indicator,Nstoolbar,我正在尝试制作我的第一个Cocoa应用程序(之前我正在制作iOS应用程序),我想为我的自定义视图做的是使其标题可点击,指示器(附件)三角形面朝下。 单击标题将打开一个包含我的项目的弹出/菜单 这在Cocoa中是如何实现的?您可以通过在IB中的窗口中添加工具栏来实现。添加工具栏后,您可以双击它以打开它的customizer视图。将弹出按钮拖动到“允许的工具栏项目”区域,插入该区域后,您可以将其拖动到显示工具栏布局的底部区域——您也可以拖动不需要的任何默认项目。可能是最简单的方法,但可能无法完全执行

我正在尝试制作我的第一个Cocoa应用程序(之前我正在制作iOS应用程序),我想为我的自定义视图做的是使其标题可点击,指示器(附件)三角形面朝下。 单击标题将打开一个包含我的项目的弹出/菜单


这在Cocoa中是如何实现的?

您可以通过在IB中的窗口中添加工具栏来实现。添加工具栏后,您可以双击它以打开它的customizer视图。将弹出按钮拖动到“允许的工具栏项目”区域,插入该区域后,您可以将其拖动到显示工具栏布局的底部区域——您也可以拖动不需要的任何默认项目。

可能是最简单的方法,但可能无法完全执行您可能希望执行的操作(这是用一个弹出项替换实际标题,而不是在工具栏区域的标题下有一个弹出按钮)。就功能而言,您的应用程序使用工具栏可能也能正常工作

但是,如果您确实想替换实际的标题,那么执行此操作的方法是将
NSWindow
标题文本设置为
@”“
以隐藏它,并通过粘贴在您自己的视图中重新绘制它

[[[theWindow contentView] superview] addSubview:theSubview];
这基本上告诉主内容视图的superview添加另一个子视图(直接从代码中“翻译”),并且您必须修改这个新子视图的框架,使其定位在标题应该定位的位置(现在它可以自由放置在窗口框架中的任何位置,包括标题栏顶部,而不仅仅是在内容视图中)


子视图
可以是您的弹出按钮,也可以是您想要的任何按钮,并且您可能还必须自定义绘制弹出按钮以匹配窗口标题的原始图形。

工具栏不是我想要的。工具栏位于窗口标题下方。我想要的是将窗口标题更改为一个带有向下三角形的按钮,以便icked-打开菜单。你可能不得不接受Vervious的想法。他访问的超级视图是NSThemeView——我不知道这是否有任何“危险”,因为这是一个未记录的视图,苹果可能会改变,但它应该能给你想要的外观。